CN113691466A - Data transmission method, intelligent network card, computing device and storage medium - Google Patents

Data transmission method, intelligent network card, computing device and storage medium Download PDF

Info

Publication number
CN113691466A
CN113691466A CN202010426297.3A CN202010426297A CN113691466A CN 113691466 A CN113691466 A CN 113691466A CN 202010426297 A CN202010426297 A CN 202010426297A CN 113691466 A CN113691466 A CN 113691466A
Authority
CN
China
Prior art keywords
forwarding
virtual
data
transmitted
hardware
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010426297.3A
Other languages
Chinese (zh)
Other versions
CN113691466B (en
Inventor
吕怡龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN202010426297.3A priority Critical patent/CN113691466B/en
Publication of CN113691466A publication Critical patent/CN113691466A/en
Application granted granted Critical
Publication of CN113691466B publication Critical patent/CN113691466B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]

Abstract

The embodiment of the application provides a data transmission method, an intelligent network card, a computing device and a storage medium, wherein data transmission between a virtual device and an external device in the computing device is realized through forwarding hardware in the computing device; and sending the data to be transmitted out through the forwarding hardware according to the determined forwarding path, namely sending the data to the virtual equipment or the external equipment. Because the forwarding hardware is the hardware arranged in the transmission equipment, the hardware can have the function of independently processing data transmission, and does not depend on the computing resource of the computing equipment when transmitting data, thereby greatly improving the performance of the computing equipment. Meanwhile, the computing equipment does not rely on software alone to transmit data, and a large amount of data is transmitted by using forwarding hardware, so that the forwarding performance of the computing equipment is improved.

Description

Data transmission method, intelligent network card, computing device and storage medium
Technical Field
The present application relates to the field of computer technologies, and in particular, to a data transmission method, an intelligent network card, a computing device, and a storage medium.
Background
With the development of the internet, the traditional it (internet technology) information technology architecture solution is also migrated and converted to a more flexible and fast-response cloud architecture, and enters the cloud computing era.
Cloud computing, which may also be referred to as "cloud," provides a service that is a file storage, access, backup, sharing, management, and collaboration service based on the internet, enterprise-oriented, and cloud storage technology. With the continued evolution of cloud computing, cloud storage based services have become the mainstream choice for business practice. Enterprises and individuals can conveniently and quickly acquire required IT resources from services provided by cloud computing through the Internet, so that the cost is reduced, and the service requirements of flexible deployment and high efficiency are met. However, as the number of user services increases, the network bandwidth needs to be increased to support the increase, and it becomes more important to meet the network demand in the face of the increase of the network bandwidth.
Disclosure of Invention
Aspects of the present application provide a data transmission method, an intelligent network card, a computing device, and a storage medium, so as to improve network forwarding performance and reduce consumption of computing resources.
The embodiment of the application provides a data transmission method, which is suitable for computing equipment, wherein the computing equipment comprises transmission equipment and at least one virtual equipment, and the transmission equipment comprises forwarding hardware; the method comprises the following steps: receiving, by the forwarding hardware, data to be transmitted that is transmitted between the at least one virtual device and an external device; determining a forwarding path of the data to be transmitted through the forwarding hardware; and sending the data to be transmitted out through the forwarding hardware according to the forwarding path.
The embodiment of the application also provides a data transmission method, which is suitable for transmission equipment with forwarding hardware; the method comprises the following steps: receiving data to be transmitted between at least one virtual device in the computing device and the external device through the forwarding hardware; determining a forwarding path of the data to be transmitted through the forwarding hardware; and sending the data to be transmitted out through the forwarding hardware according to the forwarding path.
The embodiment of the application also provides a data transmission method, which is suitable for forwarding hardware; the method comprises the following steps: receiving data to be transmitted between at least one virtual device and external devices in the computing device; determining a forwarding path of the data to be transmitted; and sending out the data to be transmitted according to the forwarding path.
The embodiment of the application also provides an intelligent network card, wherein the intelligent network card is arranged on the computing equipment, and the computing equipment comprises at least one virtual device; the intelligent network card includes: forwarding hardware; the intelligent network card receives data to be transmitted between at least one virtual device in the computing device and the external device through the forwarding hardware; determining a forwarding path of the data to be transmitted through the forwarding hardware; and sending the data to be transmitted out through the forwarding hardware according to the forwarding path.
The embodiment of the application also provides a computing device which comprises the intelligent network card.
The embodiment of the present application further provides a computing device, which includes a transmission device and at least one virtual device, where the transmission device includes forwarding hardware; the computing device further comprises: a memory and a processor; the memory for storing a computer program; a processor for executing a computer program for: receiving, by the forwarding hardware, data to be transmitted that is transmitted between the at least one virtual device and an external device; determining a forwarding path of the data to be transmitted through the forwarding hardware; and sending the data to be transmitted out through the forwarding hardware according to the forwarding path.
The embodiment of the application also provides an electronic device, which comprises a storage unit and a logic unit; the storage unit is used for storing an electronic device program; the logic unit is configured to execute a logic function of an electronic device program to: receiving data to be transmitted between at least one virtual device and external devices in the computing device; determining a forwarding path of the data to be transmitted; and sending out the data to be transmitted according to the forwarding path.
Embodiments of the present application also provide a computer-readable storage medium storing a computer program, which when executed by one or more processors causes the one or more processors to implement the steps of the above-mentioned method.
In the embodiment of the application, data transmission between the virtual equipment and the external equipment in the computing equipment is realized through forwarding hardware in the computing equipment; and sending the data to be transmitted out through the forwarding hardware according to the determined forwarding path, namely sending the data to the virtual equipment or the external equipment. Because the forwarding hardware is the hardware arranged in the transmission equipment, the hardware can have the function of independently processing data transmission, and the hardware does not depend on the computing resource of the computing equipment when transmitting data, thereby greatly improving the performance of the computing equipment. Meanwhile, the computing equipment does not rely on software alone to transmit data, and a large amount of data is transmitted by using forwarding hardware, so that the forwarding performance of the computing equipment is improved.
Under the condition that the transmission equipment also has independent computing resources, the forwarding hardware does not depend on the computing resources of the transmission equipment, meanwhile, the computing resources of the transmission equipment can be saved, and the transmission performance of the transmission equipment is improved.
Drawings
The accompanying drawings, which are included to provide a further understanding of the application and are incorporated in and constitute a part of this application, illustrate embodiment(s) of the application and together with the description serve to explain the application and not to limit the application. In the drawings:
fig. 1A is a schematic structural diagram of a data transmission system according to an exemplary embodiment of the present application;
fig. 1B is a schematic structural diagram of a data transmission system according to an exemplary embodiment of the present application;
fig. 2 is a schematic flow chart of a data transmission method according to an exemplary embodiment of the present application;
FIG. 3 is a schematic illustration of a data forwarding scheme in accordance with yet another exemplary implementation of the present application;
fig. 4 is a schematic diagram of a data transmission method according to an exemplary embodiment of the present application;
fig. 5 is a schematic diagram of a data transmission method according to an exemplary embodiment of the present application;
fig. 6 is a schematic diagram of a downstream forwarding path according to an exemplary embodiment of the present application;
FIG. 7 is a diagram illustrating the effect of data transmission according to an exemplary embodiment of the present application;
fig. 8 is a flowchart illustrating a data transmission method according to an exemplary embodiment of the present application;
fig. 9 is a flowchart illustrating a data transmission method according to an exemplary embodiment of the present application;
fig. 10 is a schematic structural diagram of a data transmission device according to another exemplary embodiment of the present application;
fig. 11 is a schematic structural diagram of a data transmission apparatus according to another exemplary embodiment of the present application
Fig. 12 is a schematic structural diagram of a data transmission device according to another exemplary embodiment of the present application; (ii) a
FIG. 13 is a schematic block diagram of a computing device provided in an exemplary embodiment of the present application;
FIG. 14 is a schematic block diagram of a computing device provided in an exemplary embodiment of the present application;
fig. 15 is a schematic structural diagram of a computing device according to an exemplary embodiment of the present application.
Detailed Description
In order to make the objects, technical solutions and advantages of the present application more apparent, the technical solutions of the present application will be described in detail and completely with reference to the following specific embodiments of the present application and the accompanying drawings. It should be apparent that the described embodiments are only some of the embodiments of the present application, and not all of the embodiments. All other embodiments, which can be derived by a person skilled in the art from the embodiments given herein without making any creative effort, shall fall within the protection scope of the present application.
Virtualization is a key ring of a cloud computing infrastructure, and the number of physical servers can be effectively reduced. Virtualization saves space occupied by a data center and operation overhead by efficiently integrating a physical infrastructure and an application program. Through the virtualization technology, a plurality of virtual machines can be generated on one physical server, and comprehensive isolation can be realized among the virtual machines. And the user acquires resources on the cloud computing through the virtual machines.
In recent years, due to the increase of network function virtualization (nfv) (network Functions virtualization) applications on the cloud, the requirements of users on network performance are also continuously increased, and with the gradual popularization of 100G network cards, the performance and bandwidth of the network card are continuously improved, although a Central Processing Unit (CPU) and a Network Interface Controller (NIC), which may also be referred to as a network card, provide several mechanisms to improve the efficiency of I/O (Input/Output) processing, for example, directly introduce data into a CPU LLC (Last layer Cache), and improve expandability by reducing Cache contention among CPU cores and reducing interrupt frequency. However, even with these enhanced functions, pure software forwarding cannot meet the increasing network demands, and only the number of CPUs is increased continuously for network forwarding.
If DPDK (Data Plane Development Kit) PMD (Poll Mode Driver) is used at both the front and back ends of the cloud, and only the simplest forwarding is performed. To achieve true zero packet loss, the single core forwarding performance is only 2.17 mbps (packets per second), and this also requires very deep code tuning and extensive system and configuration optimization. Furthermore, if a small amount of other processing is added to the forwarding logic, a significant degradation in forwarding performance may result. It is therefore a very challenging task to implement high performance forwarding with pure software, even if there is enough CPU resources.
In the embodiment of the application, data transmission between the virtual equipment and the external equipment in the computing equipment is realized through forwarding hardware in the computing equipment; and sending the data to be transmitted out through the forwarding hardware according to the determined forwarding path, namely sending the data to the virtual equipment or the external equipment. Because the forwarding hardware is the hardware arranged in the transmission equipment, the hardware can have the function of independently processing data transmission, and the hardware does not depend on the computing resource of the computing equipment when transmitting data, thereby greatly improving the performance of the computing equipment. Meanwhile, the computing equipment does not rely on software alone to transmit data, and a large amount of data is transmitted by using forwarding hardware, so that the forwarding performance of the computing equipment is improved.
Under the condition that the transmission equipment also has independent computing resources, the forwarding hardware does not depend on the computing resources of the transmission equipment, meanwhile, the computing resources of the transmission equipment can be saved, and the transmission performance of the transmission equipment is improved.
The technical solutions provided by the embodiments of the present application are described in detail below with reference to the accompanying drawings.
Fig. 1A is a schematic structural diagram of a data transmission system according to an exemplary embodiment of the present application. As shown in fig. 1A, the transmission system 100A may include: a first device 101 and a second device 102.
The first device 101 may be a device with certain computing capability, and may implement a function of sending transmission data to the second device 102, where the transmission data may belong to data to be transmitted for the second device 102. This transmission of data may require some data processing by the second device 102. The basic structure of the first device 101 may include: at least one processor. The number of processors may depend on the configuration and type of device with a certain computing power. A device with certain computing capabilities may also include Memory, which may be volatile, such as RAM, non-volatile, such as Read-Only Memory (ROM), flash Memory, etc., or both. The memory typically stores an Operating System (OS), one or more application programs, and may also store program data and the like. In addition to the processing unit and the memory, the device with certain computing capabilities also includes some basic configurations, such as a network card chip, an IO bus, a display component, and some peripheral devices. Alternatively, some peripheral devices may include, for example, a keyboard, a stylus, and the like. Other peripheral devices are well known in the art and will not be described in detail herein. Alternatively, the first device 101 may be a smart terminal, such as a mobile phone, a desktop computer, a notebook, a tablet computer, and the like.
The second device 102 refers to a device that can provide a computing processing service in a network virtual environment, and may refer to a device that performs data transmission and data processing using a network. In physical implementation, the second device 102 may be any device capable of providing computing services, responding to service requests, and performing data processing, and may be, for example, a cloud server, a cloud host, a virtual center, a regular server, and the like. The second device 102 mainly includes a processor, a hard disk, a memory, a system bus, and the like, and is similar to a general computer architecture.
In this embodiment, the first device 101 sends transmission data to be processed to the second device 102; the second device 102 receives the transmission data (for the second device 102, the transmission data is also data to be transmitted), and sends the transmission data to a corresponding virtual device in the second device 102 through forwarding hardware in the transmission device.
After receiving the transmission data, the virtual device may perform data processing on the transmission data, send the processed data to the forwarding hardware, and return the processed data to the first device 101 through the forwarding hardware.
In addition, based on the system 100A, an exemplary embodiment of the present application further provides a schematic structural diagram of a data transmission system. As shown in fig. 1B, the transmission system 100B may include: a first device 101, a second device 102 and a third device 103.
Since the first device 101 and the second device 102 have been described in detail above, they are described in detail here.
Wherein the third device 103 is similar to the second device 102. The third device 103 may also be a device that can provide a computing processing service in a network virtual environment, and may be a device that performs data transmission and data processing using a network. In physical implementation, the third device 103 may be any device capable of providing computing services, responding to service requests, and performing data processing, and may be, for example, a cloud server, a cloud host, a virtual center, a regular server, and the like. The third device 103 mainly includes a processor, a hard disk, a memory, a system bus, and the like, and is similar to a general computer architecture.
Based on the description in the system 100A, after receiving the transmission data, the virtual device in the second device 102 may send the transmission data (for the third device 103, the transmission data may also be data to be transmitted) to the third device 103 through forwarding hardware in the process of processing the data. The transmission device in the third device 103 receives the transmission data, and the forwarding hardware in the transmission device sends the transmission data to the corresponding virtual device, and the virtual device performs data processing on the transmission data and returns the processed data to the corresponding virtual device of the second device 102 in an original path, so that the corresponding virtual device of the second device 102 performs data processing based on the received processed data and returns the processed data to the first device 101.
In addition, as for the third device 103, the third device 103 may also have no virtual device and forwarding hardware, and after the transmission device of the third device 103 receives the transmission data, the third device 103 itself may directly perform data processing on the received transmission data, and return the data processing result to the second device 102.
The number of devices involved in each of the systems may be plural. E.g. a plurality of different first devices 101 accessing one or more different second devices 102, etc.
In an application scenario of the embodiment of the application, a user stores a video file to a second device 102, such as a cloud server, through a first device 101, such as a computer. The user accesses the web network interface of the second device 102 providing the storage service through the browser installed in the first device 101. The first device 101, in response to an operation of storing a video file by a user, acquires the video file as transmission data (i.e., data to be transmitted), and sends the video file to a transmission device, such as a network card, of the second device 102. After receiving the video file, the transmission device sends the video file to forwarding hardware inside the transmission device, such as a Field Programmable Gate Array (FPGA), or, directly receives the video file by the FPGA in the network card, queries a forwarding path of the video file through the forwarding hardware, and sends the video file to a virtual device, such as a virtual machine, in the second device 102 according to the forwarding path, so as to store the file. After the virtual device stores the video file, the information that the video is successfully stored may be forwarded to the first device 101 through forwarding hardware, so that the first device 101 receives the information and displays the information to the user through a web interface.
In addition, when the forwarding hardware cannot find the forwarding path of the video file, the video file is uploaded to a virtual forwarding device, such as a virtual switch, where the virtual forwarding device may be set on a network card, that is, a software virtual forwarding device running on a CPU of the network card, or the virtual forwarding device may also be set on the second device 102, that is, a software virtual forwarding device running on a CPU of a cloud server. And the first layer of virtual forwarding equipment in the virtual forwarding equipment receives the video file, determines a forwarding path of the video file, and sends the video file to the corresponding virtual equipment according to the forwarding path.
When the first layer of virtual forwarding equipment can not determine the forwarding path, the first layer of virtual forwarding equipment uploads the video file to a second layer of virtual forwarding equipment in the virtual forwarding equipment, and the second layer of virtual forwarding equipment determines the forwarding path and sends the video file to the corresponding virtual equipment.
In addition, the user may also obtain files from the second device 102 through the first device 101. The first device 101 sends an acquisition request to the second device 102, the second device 102 sends the acquisition request to a corresponding virtual device through forwarding hardware, and the virtual device can acquire a file corresponding to the acquisition request from the third device 103 based on the acquisition request. The process of acquiring the file is similar to the process of sending data from the first device 101 to the second device, and is not described herein again. After receiving the file, the virtual device corresponding to the second device 102 returns the file to the first device 101.
It should be noted that the system may also be applied to other scenarios, for example, website building, cloud service selling, and the like, which is not described in detail herein.
In the present embodiment described above, the first device 101, the second device 102, and the third device 103 perform network connection, which may be wireless connection. If the first device 101, the second device 102, and the third device 103 are communicatively connected, the network format of the mobile network may be any one of 2G (gsm), 2.5G (gprs), 3G (WCDMA, TD-SCDMA, CDMA2000, UTMS), 4G (LTE), 4G + (LTE +), WiMax, 5G, and the like.
The following describes the data transmission process in detail with reference to the method embodiment.
Fig. 2 is a flowchart illustrating a data transmission method according to an exemplary embodiment of the present application. The method 200 provided by the embodiment of the present application is executed by a computing device, that is, the second device 102 is executed, for example, a cloud server. The computing device includes a transmitting device including forwarding hardware and at least one virtual device. The method 200 comprises the steps of:
201: and receiving data to be transmitted between the at least one virtual device and the external device through the forwarding hardware.
202: and determining a forwarding path of the data to be transmitted through forwarding hardware.
203: and sending out the data to be transmitted according to the forwarding path through forwarding hardware.
The following is detailed for the above steps:
201: and receiving data to be transmitted between the at least one virtual device and the external device through the forwarding hardware.
The forwarding hardware refers to forwarding hardware with processing capability, and the hardware can forward data, wherein the data can be transmitted in a message form. The hardware may be an editable electronic device with processing function, such as an FPGA, an Integrated Circuit with processing function, such as an ASIC (Application Specific Integrated Circuit), or an editable chip with processing function, such as a TOFINO dofnol chip.
It should be understood that each type of forwarding hardware may implement the logic of the forwarding function through programmed logic.
A virtual device refers to a device that relies on a computing device (e.g., a physical server, a cloud server, etc.) to create an independent operating environment. Such as a virtual machine. May be created on a computing device through virtual techniques. The virtual device may also be a container docker, where the computing device supports, e.g., the computing device may provide multiple transport devices.
The external device refers to a device other than the computing device, and performs network communication with the virtual device in the computing device. Such as the user's computer.
For example, according to the foregoing, a computer of a user sends a video file to a cloud server for storage through a network, and the cloud server receives the video file through a network card configured in the cloud server. After the network card receives the video file, the video file is determined to be sent to a certain virtual machine on the cloud server, and the video file can be sent to FPGA forwarding hardware.
In addition, when at least one virtual machine on the cloud server needs to send a message to the computer of the user, the virtual machine sends the message to the FPGA forwarding hardware, the FPGA forwarding hardware sends the message to the computer of the user through the network card.
It should be noted that the forwarding hardware may be disposed in a transmission device, and the transmission device may perform a network transmission function, such as a physical network card, an intelligent network card, and so on. The forwarding hardware may also exist independently, is not arranged in the network card, but may be connected with the network card to further complete the forwarding function, and at this time, the transmission device may be directly the forwarding hardware, such as an FPGA.
202: and determining a forwarding path of the data to be transmitted through forwarding hardware.
The forwarding path refers to information that the data to be transmitted needs to send a destination next time, and may be recorded through a flow table, where multiple forwarding paths may be recorded in the flow table, and each forwarding path may also be referred to as a flow direction of one data, or a flow. In the forwarding hardware, the forwarding hardware cannot support the forwarding of all paths due to the limitation of hardware resources, and the forwarding hardware needs to forward the supportable forwarding paths according to the hardware resources.
Some information such as matching fields, action sets, and counters may be recorded in each forwarding path. The matching field may have address information, such as a source address, for matching information carried by the data to be transmitted, and after matching is successful, the forwarding action may be executed according to the action in the action set, so that the counter may count once.
The method for determining the forwarding path of the data to be transmitted may include: matching data to be transmitted with at least one forwarding path in forwarding hardware; and determining the matched forwarding path under the matching result.
The matching of the data to be transmitted and at least one forwarding path in the forwarding hardware includes: and matching the field data in the data to be transmitted with the corresponding field data in at least one forwarding path. It should be understood that this field data is the match field described above.
For example, according to the foregoing, after receiving a video file, an FPGA (i.e., FPGA forwarding hardware), the FPGA sends the video file in the form of a message, and the FPGA analyzes the message to obtain matching fields carried by the message, such as source address information and identification information pointing to a virtual device. When the matching field of the message is the same as the matching field in any forwarding path recorded in the flow table in the FPGA, the matching forwarding path can be determined.
203: and sending out the data to be transmitted according to the forwarding path through forwarding hardware.
For example, according to the foregoing, after the FPGA determines that there is a matching forwarding path, the FPGA may forward the video file to the corresponding virtual machine according to the forwarding action in the forwarding path.
Under the condition that the external device sends data to at least one virtual device, sending the data to be transmitted according to a forwarding path through forwarding hardware, the method comprises the following steps: determining corresponding virtual equipment according to a forwarding path through forwarding hardware; and sending the data to be transmitted to the virtual equipment through forwarding hardware.
For example, according to the foregoing, after the FPGA determines that there is a matching forwarding path, the FPGA may determine the virtual machine according to the identifier pointing to the corresponding virtual machine recorded in the forwarding path, so as to send the video file to the corresponding virtual machine.
It should be noted that, when the virtual device sends the data to be transmitted to the external device, the process is similar to or the reverse process of sending the data to be transmitted from the external device to the virtual device, and details are not described here. It should be understood that when the virtual device, for example, a virtual machine, sends data to be transmitted to the FPGA to determine a forwarding path, so as to implement forwarding.
Specifically, determining, by the forwarding hardware and according to the forwarding path, the corresponding virtual device may include: determining, by forwarding hardware, a first virtual transmission device according to a virtual transmission identifier in a forwarding path, the first virtual transmission device being created based on a transmission device; and determining the corresponding virtual equipment according to the first virtual transmission equipment through forwarding hardware.
The first virtual transmission device is a virtual device, such as a virtual network card, for performing data transmission between the virtual device and the forwarding hardware. The virtual transmission device and the virtual device have a one-to-one correspondence relationship, for example, a one-to-one correspondence relationship exists between the virtual network card and the virtual machine. The corresponding relationship is generated when the virtual device is created in the computing device, and after the virtual device is generated, a virtual forwarding device identifier (such as a virtual network card ID) is assigned to each virtual device. At this time, the virtual forwarding device is not established yet.
The virtual transmission identifier is information capable of uniquely determining a virtual transmission device, such as a virtual network card ID.
The first virtual transmission device is created based on the transmission device, which means that the virtual transmission device may be created based on the hardware resource division of the transmission device (e.g., the smart network card).
When the forwarding hardware is provided in the transmitting device, the first virtual transmitting device may also be created based on the forwarding hardware in the transmitting device. When the forwarding hardware is set alone, that is, not set in the transmission device, the first virtual transmission device created by the hardware may also be forwarded.
For example, as described above, the virtual network card is established by an intelligent network card (on the premise that the transmission device is an intelligent network card, the intelligent network card is taken as an example here for description) or an FPGA. The number of the virtual network cards existing in the corresponding relationship is determined by the intelligent network card or the FPGA, for example, 10 virtual network cards are determined, 10 equivalent partitions can be performed according to own hardware resources, such as CPU resources and memory resources, or logic units, storage units, and the like, and the intelligent network card or the FPGA of each hardware resource is used as the virtual network card.
After determining the matching forwarding path, the FPGA may determine a hardware virtual network card according to the virtual network card ID recorded in the forwarding path, and send the video file to the determined virtual machine in an interrupt transmission manner through the virtual IO device.
The virtual IO (Input, Output Input and Output) device refers to a virtual device that can implement IO operation, such as a virtoi device. The virtual IO device is directly established on a hardware device, such as forwarding hardware, through a program, so that the virtual IO device can be regarded as a hardware virtual IO device.
In order to reduce the occupation of the computing resources of the computing device, data transmission may also be performed in a DMA (Direct Memory Access) manner.
At this time, the forwarding hardware may be set in the transmission device, and the transmission device is an intelligent network card having a DMA controller. The intelligent network card also has a processor, and a CPU of the processor can contain a plurality of DMA controllers. The DMA controller will include an address bus, a data bus and control registers. The DMA controller has the ability to access the resources it needs without the intervention of the processor CPU itself, which can generate interrupts.
When data are sent in a DMA mode, the virtual network card stores the video file into the buffer area through the virtIO device, and stores the video file in the buffer area into a storage address in the virtual machine through the DMA controller on the intelligent network card.
It should be noted that when the forwarding hardware is sufficiently advanced, it may have a DMA controller to independently implement DMA-mode data transmission.
Under the condition that at least one virtual device sends data to external equipment, sending the data to be transmitted according to a forwarding path through forwarding hardware, wherein the method comprises the following steps: determining corresponding external equipment according to the forwarding path through forwarding hardware; and transmitting the data to be transmitted to the external equipment through the forwarding hardware.
Since the foregoing has already described the case where the virtual device sends data to the external device, no further description is given here.
In addition, in the case that at least one virtual device transmits data to an external device, the method 200 further includes: and sending the data to be transmitted from the at least one virtual device to forwarding hardware through a first virtual transmission device, wherein the first virtual transmission device is created based on the transmission device.
It should be noted that, when the virtual device sends data to the external device, the virtual device first sends the data to be transmitted to the forwarding hardware through the corresponding first virtual transmission device, and then the data is sent by the forwarding hardware. Since the process is similar to the case where the external device sends the data to the virtual device, or is the reverse process, it is not described here again.
Based on this, the computing device can realize the forwarding of the data through the forwarding hardware, and the forwarding does not occupy the computing resource of the computing device, and the forwarding hardware realizes the forwarding, thereby saving the computing resource of the computing device. Meanwhile, because the computing equipment needs to forward a large amount of data, most of the data forwarding can be shared by the forwarding hardware, so that the data forwarding amount of the computing equipment is reduced, and the forwarding performance of the computing equipment is improved. In order to better implement the embodiment, a better way is to set forwarding hardware, such as an FPGA, in a network card, where the network card may be a common network card or an intelligent network card.
However, since the forwarding hardware is affected by its hardware resources, the forwarding of all data cannot be achieved. In order to solve the problem that a small part of data cannot be forwarded by forwarding hardware, and implement forwarding of the small part, the embodiment of the present application further has the following scheme:
the computing device further includes: the first processing unit is provided with a first virtual forwarding device in operation; wherein, the method 200 further comprises: matching data to be transmitted with at least one forwarding path in forwarding hardware; and under the unmatched result, the data to be transmitted are sent to the first virtual forwarding equipment through the forwarding hardware for data forwarding.
The first processing unit refers to a processor, such as a CPU, on the computing device. A first virtual forwarding device may be running on the processor.
The first virtual forwarding device refers to a virtual network transmission device, and is configured to forward corresponding data received on a physical transmission device (i.e., the transmission device) to a virtual device in the computing device. Such as a Virtual Switch (VS). The virtual forwarding device running on the CPU processor of the computing device may be created on the computing device by a virtual technology, which is described herein since the virtual technology belongs to the prior art.
It should be noted that, for the data forwarding in this case, the computing device may have a common physical network card Nic.
For a common physical network card, especially when the common physical network card is used as a transmission device, the forwarding hardware may be arranged in the common physical network card. Alternatively, the transmission device may include a common physical network card and forwarding hardware, as a network device of the computing device, such as an integrated network card. In this case, for a common physical network card, the forwarding hardware may be an ASIC. For this case, the first virtual forwarding device is disposed on a CPU on the computing device (also referred to as Host), i.e., it runs on the CPU, such as on a CPU of a cloud server. Then the forwarding structure can be as shown in figure 3. For example, as described above, when forwarding hardware, such as an ASIC, receives a video file and determines that the video file does not match a forwarding path in a flow table in the ASIC, the ASIC is required to send the video file to a first layer virtual switch (Host VS) of Host through Nic, that is, a first virtual forwarding device, which may also be referred to as a VS fastpath. The method runs on a CPU of the Host and belongs to software equipment. Forwarding of the video file is performed by VS fastpath.
Specifically, the data to be transmitted is sent to the first virtual forwarding device through the forwarding hardware, and the data forwarding is performed, including: receiving data to be transmitted through first virtual forwarding equipment, and matching the data to be transmitted with at least one forwarding path in the first virtual forwarding equipment; determining a matched forwarding path under the successful matching result; and sending the data to be transmitted according to the forwarding path through the first virtual forwarding equipment.
It should be noted that, since the VS fastpath belongs to a software device, it can handle data forwarding that the forwarding hardware cannot handle. The software device, however, requires the consumption of computing resources, particularly of computing devices, which is much less than the consumption of computing resources for forwarding data by pure software. A flow table is also stored in the VS fastpath, and a plurality of forwarding paths and the like are also recorded in the flow table.
For example, according to the foregoing, after receiving a video file, the VS fastpath parses a message of the video file, obtains a matching field of the message, matches the matching field with a forwarding path in the VS fastpath, determines the matching forwarding path, and may forward the video file according to a pointed virtual device in the forwarding path.
It should be noted that the process of matching forwarding paths and forwarding in VS fastpath is similar to the process of matching forwarding paths and forwarding in forwarding hardware, so detailed descriptions are not provided here, and please refer to the foregoing specific implementation process.
When the external device sends data to the at least one virtual device, sending the data to be transmitted according to the forwarding path may include: determining a second virtual transmission device according to the virtual transmission identifier in the forwarding path through the first virtual forwarding device, wherein the second virtual transmission device runs on the first processing unit; and determining the corresponding virtual equipment according to the second virtual transmission equipment through the first virtual forwarding equipment, and sending the data to be transmitted to the corresponding virtual equipment.
And the second virtual transmission equipment is similar to or the same as the first virtual transmission equipment. The second transmission device is a virtual device, such as a virtual network card, for performing data transmission between the virtual device and the first virtual forwarding device. The virtual transmission device and the virtual device have a one-to-one correspondence relationship, for example, a one-to-one correspondence relationship exists between the virtual network card and the virtual machine. The correspondence is generated when a virtual device is created in the computing device, and after the virtual device is generated, a virtual forwarding device identifier (such as a virtual network card ID or an address) is assigned to each virtual device. The second virtual transmission device can be created on the Host through a virtual technology, and the Host CPU runs the second virtual transmission device, namely the second virtual transmission device belongs to software virtual transmission devices. In addition, the second virtual transmission device may also be created on the forwarding hardware according to the hardware resource of the forwarding hardware, and at this time, the second virtual transmission device is the same as the first virtual transmission device.
For example, according to the foregoing, when the VS fastpath determines the matching forwarding path, the virtual network card may be determined according to the virtual network card ID or the virtual network card address recorded in the forwarding path, and the determined virtual network card may send the video file to the determined virtual machine in an interrupt transmission manner or a DMA manner through the virtual IO device.
It should be noted that, when the virtual network card is set on the forwarding hardware, at this time, the VS fastpath needs to send the video file to the virtual network card corresponding to the forwarding hardware, and the virtual network card sends the video file to the corresponding virtual machine in the computing device. And when the virtual network card is arranged on the computing equipment, the virtual network card can be directly sent to the software virtual network card by VS fastpath on the software. The video file is sent by the hardware virtual transmission equipment, so that the computing resource of the computing equipment can be saved.
In addition, when the virtual device sends data to be transmitted to the external device, the process is similar, and details are not shown here.
However, for the software VS fastpath, there may be data that cannot be processed, so the method 200 may further include: and under the unsuccessful matching result, transmitting the data to be transmitted to third virtual forwarding equipment running on the first processing unit through the first virtual forwarding equipment for data forwarding.
The third virtual forwarding device refers to a virtual network transmission device, and is configured to forward corresponding data received on a physical transmission device (that is, the transmission device) to a virtual device in the computing device. Such as a Virtual Switch (VS). The virtual forwarding device running on the CPU processor of the computing device may be created on the computing device by a virtual technology, which is described herein since the virtual technology belongs to the prior art. The third virtual forwarding device is similar to the first virtual forwarding device. But the third virtual forwarding device is more powerful than the first virtual forwarding device. The third virtual forwarding device may store a plurality of flow tables, each of which records a plurality of forwarding paths. The data to be transmitted may be diverted from one flow table to the next until finally forwarded out. At this time, as shown in fig. 3, if the forwarding structure cannot process the data to be transmitted at VS fastpath, the data to be transmitted is uploaded to a second virtual forwarding device, which may also be referred to as a second layer virtual forwarding device, that is, a VS slowpath (virtual machine slowpath), and the VS slowpath processes and forwards the data to be transmitted.
For example, according to the foregoing, after the VS fastpath cannot determine the matching forwarding path, the video file is sent to the VS slowpath. And after receiving the video file, the VS slowpath sends the video file out.
Specifically, the VS slowpath determines a forwarding path, and forwards the data to be transmitted according to the forwarding path.
For example, according to the foregoing, the VS slowpath parses a packet of the video file, obtains the matching field, determines a final forwarding path according to the multiple flow tables, and forwards the video file according to the forwarding path.
It should be noted that the forwarding process of the VS slowpath is similar to the forwarding process of the VS fastpath, and is not described here again. The final forwarding path may be a set of multiple matched paths.
In addition, if the VS slowpath does not find the forwarding path of the video file, packet loss or other processing may be directly performed.
In order to improve the forwarding hardware and the data forwarding capability of the first virtual forwarding device. The method 200 may further include: matching the data to be transmitted with at least one forwarding path in the third virtual forwarding device, and determining the matched forwarding path; generating at least one forwarding path to be updated according to at least one forwarding path determined for at least one data to be transmitted; and sending at least one forwarding path to be updated to the first virtual forwarding device and the forwarding hardware.
For example, according to the foregoing, after the VS slowpath forwards multiple pieces of data to be transmitted, multiple forwarding paths may be obtained, where each forwarding path may be obtained by multiple matching forwarding paths to which corresponding one piece of data to be transmitted is matched. The VS slowpath takes the obtained multiple forwarding paths as forwarding paths to be updated, and issues the forwarding paths to the forwarding hardware ASIC and the VS fastpath to update the forwarding paths of the ASIC and the VS fastpath, and enriches respective flow tables of the forwarding paths, so that more data to be transmitted can be processed and forwarded, and unnecessary occupation of computing resources is reduced.
Since the forwarding hardware is affected by hardware resources and cannot process all data, not all forwarding paths can be executed, and therefore the third virtual forwarding device needs to send the forwarding paths that can be executed to the forwarding hardware.
Therefore, the method 200 may further include: generating at least one forwarding path to be updated which meets the processing requirement of forwarding hardware according to at least one forwarding path determined aiming at least one data to be transmitted; and sending at least one forwarding path to be updated which can be processed to the forwarding hardware.
For example, according to the foregoing, the VS slowpath may generate a forwarding path to be updated and directly send the forwarding path to the VS fastpath. When the forwarding hardware is targeted, the VS slowpath needs to determine which forwarding paths cannot be executed by the forwarding hardware according to hardware resources of the forwarding hardware, so that the paths that cannot be executed can be deleted from the generated forwarding paths to be updated, and the deleted forwarding paths to be updated are sent to the forwarding hardware. Or the VS slowpath directly generates a plurality of forwarding paths executable by the forwarding hardware for the forwarding hardware, and issues the forwarding paths to the forwarding hardware.
When the third virtual forwarding hardware issues the final forwarding path to be updated to the forwarding hardware, in order to implement the issuing more conveniently and quickly, the path issuing may be performed in the following manner:
sending at least one forwarding path to be updated to forwarding hardware, including: sending the forwarding path to be updated to the first conversion equipment through the third virtual forwarding equipment; and converting the forwarding path to be updated into a forwarding path recognizable by the forwarding hardware according to the type of the forwarding hardware through the first conversion equipment, and sending the forwarding path to the forwarding hardware.
The first conversion device is used for converting the forwarding path to be updated into a forwarding path recognizable by forwarding hardware according to the type of the forwarding hardware and issuing the forwarding path. The first translation device is a software device running on the computing device CPU, which may also be referred to as an xflow abstraction layer. As shown in fig. 5, this xflow may be provided on a network architecture platform, netframe, which is also a software device running on the CPU of the computing device. And interfacing with a third virtual forwarding device.
For example, according to the foregoing, the VS slowpath issues the forwarding path to be updated to the xflow abstraction layer through the preset transmission protocol, and after receiving the forwarding path to be updated, the xflow abstraction layer converts the forwarding path to be updated into the forwarding path that can be identified by the corresponding type of forwarding hardware based on the conversion logic corresponding to the type of forwarding hardware according to the type of forwarding hardware, such as FPGA or ASIC, and different types of forwarding hardware. After the conversion, the xflow abstraction layer transmits the converted forwarding path to be updated to the forwarding hardware, so that the corresponding forwarding hardware can identify the forwarding path to be updated and update the forwarding path.
It should be noted that the conversion logic of different types of forwarding hardware is provided by the manufacturer of its production or development as the usage instruction of the forwarding hardware. In addition, the xflow abstraction layer can be continuously updated according to the type of the forwarding hardware, and the conversion function of new forwarding hardware is added.
Therefore, software logic implementation and a hardware platform can be decoupled, the difference between forwarding hardware types is shielded by software VS by means of the platform capability of xflow in netframe, and forwarding path management related operations related to the forwarding hardware are shielded by an xflow abstraction layer.
Since each forwarding path has its own aging time, i.e., no data passes through the forwarding path for a certain time, the forwarding path needs to be deleted to make more room to store more other forwarding paths. But the aging time may vary from forwarding path to forwarding path. For software managed forwarding paths, these paths may be better managed. However, due to the limited hardware resources of the forwarding hardware and the long development period of the forwarding hardware, it is not suitable to implement complex or frequently-changed logic in hardware, and it is not possible to flexibly manage forwarding paths with different aging times as in software. However, the types of services carried by the VS are very diverse, so it is better to tell the hardware a simple instruction by which the hardware decides what processing action to do for what traffic (or data). In contrast, the forwarding hardware may manage forwarding paths with the same aging time, that is, forwarding paths in the forwarding hardware belong to the same aging time, and may have different starting times but the existing times are the same.
Thus, to better adapt the forwarding hardware, the method 200 further comprises: acquiring the current network connection state from the data to be transmitted through forwarding hardware; and sending the data to be transmitted which can not be processed by the forwarding hardware to the first virtual forwarding equipment according to the network connection state, and sending the data.
The network connection state refers to a network connection condition, and may be divided into a network initial connection state, a network stable connection state, and a network end connection state. Because of the most common of the network stable connected state, the forwarding hardware needs to be maintained in the network stable connected state, i.e. the aging time of its respective forwarding path is corresponding to the network stable connected state. The forwarding paths in the initial network connection state and the end network connection state also have corresponding aging time, and the aging time is different in different states.
For example, according to the foregoing, the ASIC receives a packet, analyzes the packet, obtains some information of the packet, and obtains the network state identifier carried in the packet, thereby determining that the packet is an initial network connection packet. For example, the sync bit SYN in the header of the message should be set to 1, and a sequence number x is selected, indicating that the sequence number of the first data byte when data is transmitted later is x. The message is regarded as a TCP (Transmission Control Protocol) connection request message. At this time, after the ASIC determines the packet, the ASIC uploads the packet to the software VS, such as VS fastpath, regardless of whether the packet matches with a forwarding path therein, and processes the packet. Similarly, for the end bit FIN of the header in the packet is set to 1, the sequence number u is equal to the sequence number of the last byte of the transmitted data plus 1. The ASIC determines that the message is a request network connection termination message, and uploads the message to the software VS, such as VS fastpath, where it processes the message.
In order to flexibly handle the aging times of different forwarding paths, the method 200 further comprises: after the data to be transmitted is sent through the first virtual forwarding device, according to the network connection state, deleting a corresponding forwarding path existing in forwarding hardware through the first virtual forwarding device, wherein the corresponding forwarding path belongs to the forwarding path of the data to be transmitted.
For example, as described above, after the VS fastpath finishes processing the packet, if the packet indicates that the network is in the end connection state, the VS fastpath further needs to delete the corresponding forwarding path in the ASIC, and the deletion may be performed by sending a deletion message. If the ASIC does not have a corresponding path, then it is not deleted.
It should be noted that, no matter the message indicates the initial connection state of the network or the message indicates the end connection state of the network, the VS fastpath may notify the ASIC to delete the corresponding forwarding path. However, since the aging time of the forwarding path corresponding to the network connection ending state is shorter than the aging time of the forwarding path corresponding to the network stable connection state, the corresponding forwarding path in the forwarding hardware needs to be actively deleted, so that the forwarding path does not occupy the storage space of the forwarding hardware too long, and a space is left for other forwarding paths. If the aging time of the forwarding path corresponding to the initial network connection state is longer than that of the forwarding path corresponding to the stable network connection state, the forwarding path may not be deleted because the storage space of the forwarding hardware is not occupied too long.
When the first virtual forwarding device cannot process the reported packet indicating the network status, the method 200 may further include: if the first virtual forwarding equipment does not have a forwarding path of the data to be transmitted, the data to be transmitted is sent to third virtual forwarding equipment; after the data to be transmitted is sent through the third virtual forwarding device, according to the network connection state, deleting a corresponding forwarding path existing in the forwarding hardware through the third virtual forwarding device, wherein the corresponding forwarding path belongs to the forwarding path of the data to be transmitted.
For example, according to the foregoing, if the VS fastpath cannot process the packet, the packet is uploaded to the VS slowpath, and the VS slowpath processes the packet. After the processing, if the packet indicates that the network is in the end connection state, the VS slowpath also needs to delete the corresponding forwarding path in the ASIC, and the deletion can be performed by sending a deletion message. If the ASIC does not have a corresponding path, then it is not deleted. The specific process is similar to the VS fastpath processing process, and is not described herein again.
In addition, when the VS slowpath issues the forwarding path to the forwarding hardware, only the forwarding path corresponding to the network stable connection state is issued, and the forwarding path is issued in the network stable connection state. And the forwarding hardware processes the message corresponding to the network stable connection state, so that data forwarding is realized according to the foregoing.
It should be noted that similar problems exist, many service types need to be abstracted and modified for forwarding hardware, and each service type is not simply converted, and must be sufficiently universal or otherwise meaningless.
In addition, the software creates the forwarding path directly on the forwarding CPU (e.g., the forwarding CPU of the computing device), but the forwarding path needs to be issued to the forwarding hardware. The CPUs are required to issue, and if each CPU issues independently, locking is required, which is poor performance. To solve this problem, the following method can be used:
specifically, sending at least one forwarding path to be updated to forwarding hardware includes: sending at least one forwarding path to be updated to a queue through at least one first processing unit; and sending at least one forwarding path to be updated in the queue to forwarding hardware through a first processing unit.
For example, as shown in fig. 6, according to the foregoing, when the VS slowpath issues the forwarding path to be updated to the ASIC, the multiple data plane CPUs of the computing device store the forwarding path in the queue ring. There may be multiple queues ring. A control surface CPU of the computing device polls the queue ring, and once a forwarding path exists in the queue ring in the polling mode, the forwarding path is issued to the ASIC.
It should be noted that, when the CPU issues the forwarding path, the converted forwarding path may also be issued to the forwarding hardware along the xflow abstraction layer through the xflow abstraction layer. Meanwhile, time overhead and resource overhead brought by locking can be reduced.
In order to save more computing resources of the computing device and forward data that cannot be processed by forwarding hardware, the embodiment of the present application further adopts the following scheme to implement:
specifically, the transmission device further includes: the independent second processing unit runs with a second virtual forwarding device; wherein, the method 200 further comprises: matching data to be transmitted with at least one forwarding path in forwarding hardware; and under the unmatched result, the data to be transmitted are sent to the second virtual forwarding equipment through the forwarding hardware for data forwarding.
The transmission device may further include a hardware device having an independent processing unit (i.e., a second processing unit), such as a hardware device having an independent CPU, and the hardware device may further have an independent kernel, an independent Memory, a DMA (Direct Memory Access) controller, and the like, and may be regarded as a small independent smart terminal. The method and the device can be used for receiving the data to be transmitted sent by the external equipment or sending the data to be transmitted sent by the virtual equipment to the external equipment. The hardware device may be an intelligent network card, and the intelligent network card may be a System-on-a-Chip (SoC) with a CPU. The transmission device can also be an intelligent FPGA chip with the configuration.
The second processing unit refers to a processor, such as a CPU, on the transmission device. A second virtual forwarding device may be running on the processor.
The second virtual forwarding device refers to a virtual network transmission device, and is configured to forward corresponding data received on the physical transmission device (i.e., the above-mentioned intelligent network card) to a virtual device in the computing device. Such as a Virtual Switch (VS). The virtual forwarding device running on the CPU processor of the intelligent network card may be created on the computing device by a virtual technology, which is described herein since the virtual technology belongs to the prior art.
For the intelligent network card, especially when the transmission device further includes an intelligent network card, the forwarding hardware may be an FPGA. Alternatively, the transmission device may be an intelligent network card, and the forwarding hardware may be disposed in the network card. For the above case, the first virtual forwarding device is set on the CPU of the smart network card, that is, it runs on the CPU. Then the flow may be as shown in figure 4 for this forwarding. For example, as described above, the transmission device includes forwarding hardware and an intelligent network card. When forwarding hardware, such as an FPGA receives a video file through a serial interface SERDES (SERializer/DESerializer), and determines that the video file is not matched with a forwarding path in a flow table in the FPGA, the FPGA is required to return the video file to the SERDES, and the SERDES sends the video file to a first layer virtual switch (Moc VS) on an intelligent network card, that is, a second virtual forwarding device, which may also be referred to as a VS fastpath. The intelligent network card runs on a CPU of the intelligent network card and belongs to software equipment. Forwarding of the video file is performed by VS fastpath. And the second virtual forwarding device receives the video file through the ixgbe program driver.
It should be noted that, since the transmission device includes the intelligent network card with an independent computing unit, which is independent of the computing device, the data to be transmitted is transmitted through the transmission device, so that excessive computing resources of the cloud server, such as CPU resources, are not occupied, that is, computing resources shared by the virtual devices in the cloud server are not occupied, and thus the computing resources shared by the virtual devices are effectively improved.
Wherein, will wait to transmit data transmission to the virtual forwarding device of second through the forwarding hardware, carry out data forwarding, include: receiving data to be transmitted through second virtual forwarding equipment, and matching the data to be transmitted with at least one forwarding path in the second virtual forwarding equipment; determining a matched forwarding path under the successful matching result; and sending the data to be transmitted according to the forwarding path through the second virtual forwarding equipment.
It should be noted that, here, the process of performing path matching and forwarding by the second virtual forwarding device is similar to the process of performing path matching and forwarding by the first virtual forwarding device, and details are not repeated here. It should be understood that here the second virtual forwarding device is performed on the smart card, in particular on the CPU of the smart card.
Under the condition that the external equipment sends data to at least one virtual device, sending the data to be transmitted according to the forwarding path, wherein the sending process comprises the following steps: determining a first virtual transmission device according to a virtual transmission identifier in a forwarding path through a second virtual forwarding device, wherein the first virtual transmission device is created based on the transmission device; and determining the corresponding virtual equipment according to the first virtual transmission equipment through the second virtual forwarding equipment, and sending the data to be transmitted to the corresponding virtual equipment.
For example, as shown in fig. 4, according to the foregoing, the VS fastpath sends the video file to the virtual network card through the iohub interface according to the determined forwarding path. Since the second virtual forwarding device sends data to the virtual device according to the first virtual transmission device, which is similar to the process of the first virtual forwarding device sending data to the virtual device according to the first virtual transmission device, the description is omitted here, and only different places are described.
It should be understood that the first virtual transmission device may be created based on hardware resources of forwarding hardware, and may also be created based on hardware resources of the smart network card.
In the event of an unsuccessful match, the method 200 may further include: and sending the data to be transmitted to fourth virtual forwarding equipment running on the second processing unit through the second virtual forwarding equipment for data forwarding.
The fourth virtual forwarding device refers to a virtual network transmission device, and is configured to forward corresponding data received on a physical transmission device (i.e., an intelligent network card) to a virtual device in the computing device. Such as a Virtual Switch (VS). The virtual forwarding device running on the CPU processor of the intelligent network card may be created on the computing device by a virtual technology, which is described herein since the virtual technology belongs to the prior art. The fourth virtual forwarding device is similar to the second virtual forwarding device. But the fourth virtual forwarding device is more powerful than the second virtual forwarding device. The fourth virtual forwarding device may store a plurality of flow tables, each of which records a plurality of forwarding paths. The data to be transmitted may be diverted from one flow table to the next until finally forwarded out. At this time, as shown in fig. 4, when the VS fastpath cannot process the data to be transmitted, the data to be transmitted is uploaded to a fourth virtual forwarding device, which may also be referred to as a second layer virtual forwarding device, that is, a VS slowpath (virtual machine slowpath), and the VS slowpath processes and forwards the data to be transmitted. The forwarding process of the fourth virtual forwarding device is the same as the forwarding process of the third virtual forwarding device, and is not described here again. Only to illustrate, the fourth virtual forwarding device sends the video file to the virtual network card through the iohub interface, and the virtual network card sends the video file to the corresponding virtual machine.
Likewise, to improve the processing power of the forwarding hardware, the method 200 may further include: matching the data to be transmitted with at least one forwarding path in the fourth virtual forwarding device, and determining the matched forwarding path; generating at least one forwarding path to be updated according to at least one forwarding path determined for at least one data to be transmitted; and sending at least one forwarding path to be updated to the second virtual forwarding device and the forwarding hardware.
It should be noted that a process of generating a forwarding path by the fourth virtual forwarding device is similar to a process of generating a forwarding path by the third virtual forwarding device, and is not described herein again. The process of the fourth virtual forwarding device issuing the forwarding path is similar to the process of the third virtual forwarding device issuing the forwarding path, and is not described here again. It is only illustrated that the issuing process in this example is that the fourth virtual forwarding device in the intelligent network card issues to the second virtual forwarding device, and the fourth virtual forwarding device in the intelligent network card issues to the forwarding hardware.
Since the forwarding hardware is affected by hardware resources and cannot execute all forwarding paths, in order to prevent invalid forwarding paths from occupying too much space of the forwarding hardware and reducing the occurrence of such a situation that forwarding cannot be performed, the method 200 may further include: generating at least one forwarding path to be updated which meets the processing requirement of forwarding hardware according to at least one forwarding path determined aiming at least one data to be transmitted; and sending at least one forwarding path to be updated which can be processed to the forwarding hardware.
Since the process of generating at least one forwarding path to be updated that satisfies the requirement that the forwarding hardware can handle and the process of issuing the path have been described in detail in the foregoing, details are not described here.
Sending at least one forwarding path to be updated to forwarding hardware, including: sending the forwarding path to be updated to the second conversion equipment through the fourth virtual forwarding equipment; and converting the forwarding path to be updated into a forwarding path recognizable by the forwarding hardware according to the type of the forwarding hardware through the second conversion equipment, and sending the forwarding path to the forwarding hardware.
The second conversion device is used for converting the forwarding path to be updated into a forwarding path recognizable by the forwarding hardware according to the type of the forwarding hardware and issuing the forwarding path. The second conversion device is a software device running on the intelligent network card CPU, and may also be referred to as an xflow abstraction layer. As shown in fig. 5, the xflow may be set on a network architecture platform netframe, which is also a software device running on the CPU of the intelligent network card. And interfacing with a fourth virtual forwarding device.
The process of forwarding the forwarding path by the second converting apparatus is similar to the process of forwarding the forwarding path by the first converting apparatus, and is not described here again. The second conversion device may also be continuously updated as the first conversion device. Therefore, software logic implementation and a hardware platform can be decoupled, the difference between forwarding hardware types is shielded by software VS by means of the platform capability of xflow in netframe, and forwarding path management related operations related to the forwarding hardware are shielded by an xflow abstraction layer.
Likewise, to better adapt the forwarding hardware, the method 200 further comprises: acquiring the current network connection state from the data to be transmitted through forwarding hardware; and sending the data to be transmitted which can not be processed by the forwarding hardware to the second virtual forwarding equipment according to the network connection state, and sending the data.
The specific implementation of forwarding data according to the network connection state has been described in detail in the foregoing, and is not described herein again, but only described here, where the forwarding hardware, such as the second virtual forwarding device that is uploaded to the intelligent network card by the FPGA, such as the VS fastpath, is used. And carrying out data forwarding in the intelligent network card by VS fastpath.
Likewise, in order to flexibly deal with the aging times of different forwarding paths, the method 200 further includes: and after the data to be transmitted is sent through the second virtual forwarding equipment, deleting a corresponding forwarding path existing in forwarding hardware through the second virtual forwarding equipment according to the network connection state, wherein the corresponding forwarding path belongs to the forwarding path of the data to be transmitted.
The specific process of deleting the forwarding path is described above, and will be described herein again. For illustration only, the forwarding path of the forwarding hardware is deleted by the second virtual forwarding device here. The deletion may be sent by the second virtual forwarding device to the forwarding hardware by a delete message or instruction. So that the forwarding hardware makes more room to store other forwarding paths.
When the second virtual forwarding device is not capable of processing data uploaded by the forwarding hardware due to the network connection status, the method 200 may further include: if the second virtual forwarding equipment does not have a forwarding path of the data to be transmitted, the data to be transmitted is sent to fourth virtual forwarding equipment; and after the data to be transmitted is sent through the fourth virtual forwarding equipment, deleting a corresponding forwarding path existing in forwarding hardware through the fourth virtual forwarding equipment according to the network connection state, wherein the corresponding forwarding path belongs to the forwarding path of the data to be transmitted.
The specific process of deleting the forwarding path is described above, and will be described herein again. For illustration only, the forwarding path of the forwarding hardware is deleted by the fourth virtual forwarding device here. A delete message or instruction may be sent by the fourth virtual forwarding device to the forwarding hardware for deletion. So that the forwarding hardware makes more room to store other forwarding paths.
In order to reduce resource consumption when the software VS on the smart network card sends a forwarding path to the forwarding hardware, the following method may be implemented:
specifically, sending at least one forwarding path to be updated to forwarding hardware includes: sending at least one forwarding path to be updated to a queue through at least one second processing unit; and sending at least one forwarding path to be updated in the queue to forwarding hardware through a second processing unit.
For example, as shown in fig. 6, according to the foregoing, when the VS slowpath in the smart network card issues the forwarding path to be updated to the FPGA, the multiple data plane CPUs of the smart network card store the forwarding path in the queue ring. There may be multiple queues ring. A control surface CPU of the intelligent network card polls the queue ring, and once a forwarding path exists in the queue ring after polling, the forwarding path is issued to the FPGA.
It should be noted that there may be multiple CPUs in the intelligent network card, and when the CPU issues the forwarding path, the converted forwarding path may also be issued to the forwarding hardware along the xflow abstraction layer through the xflow abstraction layer. Meanwhile, time overhead and resource overhead brought by locking can be reduced.
Based on this, the intelligent network card bears the forwarding task of the software VS, and at the same time, the forwarding hardware such as the FPGA is used to forward the data traffic, that is, the transmission device hardware, that is, the intelligent network card and the forwarding hardware, performs data forwarding, and no longer consumes the CPU forwarding resources on the computing device, so that the CPU performance of the computing device is greatly improved. Meanwhile, the forwarding performance can be improved by multiple times through forwarding hardware and software VS (such as VS arranged on an intelligent network card or VS arranged on a computing device), and the delay is greatly reduced. As shown in fig. 7, in the network performance comparison, rectangles in each virtual box sequentially represent VS pure software forwarding (i.e. only set on the CPU of the computing device), and the AWS (amazon cloud service, 2 × 25g network scenario) compares performance of forwarding hardware and software VS acceleration in this embodiment, which shows that this embodiment of the present application is greatly better than other forwarding manners in terms of performance.
The embodiment of the application improves the forwarding performance of the virtual switch through forwarding hardware and improves the flexibility of the virtual switch.
Based on the same inventive concept, fig. 8 is a flowchart illustrating a method for transmitting data according to another exemplary embodiment of the present application. The method 800 provided by the embodiment of the present application is performed by a transmission device having forwarding hardware, such as an intelligent network card. The method 800 includes the steps of:
step 801: and receiving data to be transmitted between at least one virtual device in the computing device and the external device through the forwarding hardware.
Step 802: and determining a forwarding path of the data to be transmitted through forwarding hardware.
Step 803: and sending out the data to be transmitted according to the forwarding path through forwarding hardware.
Wherein the transmission device is provided in a computing device and the forwarding hardware is hardware with processing capabilities.
Further, the transmission device further includes: the system comprises an independent processing unit, a first virtual forwarding device and a second virtual forwarding device, wherein the first virtual forwarding device runs on the processing unit; wherein the method 800 further comprises: matching data to be transmitted with at least one forwarding path in forwarding hardware; and under the unmatched result, the data to be transmitted are sent to the first virtual forwarding equipment through the forwarding hardware for data forwarding.
Wherein, through transmitting hardware and will wait to transmit data transmission to first virtual forwarding device, carry out data forwarding, include: receiving data to be transmitted through first virtual forwarding equipment, and matching the data to be transmitted with at least one forwarding path in the first virtual forwarding equipment; determining a matched forwarding path under the successful matching result; and sending the data to be transmitted according to the forwarding path through the first virtual forwarding equipment.
Under the condition that the external device sends data to the at least one virtual device, sending the data to be transmitted according to the forwarding path, wherein the sending method comprises the following steps: determining virtual transmission equipment according to a virtual transmission identifier in a forwarding path through first virtual forwarding equipment, wherein the virtual transmission equipment is created based on the transmission equipment; and determining the corresponding virtual equipment according to the virtual transmission equipment through the first virtual forwarding equipment, and sending the data to be transmitted to the corresponding virtual equipment.
In addition, the method 800 further includes: and under the unsuccessful matching result, transmitting the data to be transmitted to second virtual forwarding equipment running on the processing unit through the first virtual forwarding equipment for data forwarding.
In addition, the method 800 further includes: matching the data to be transmitted with at least one forwarding path in the second virtual forwarding equipment, and determining the matched forwarding path; generating at least one forwarding path to be updated according to at least one forwarding path determined for at least one data to be transmitted; and sending at least one forwarding path to be updated to the first virtual forwarding device and the forwarding hardware.
Sending at least one forwarding path to be updated to forwarding hardware, including: sending the forwarding path to be updated to the conversion equipment through the second virtual forwarding equipment; and converting the forwarding path to be updated into a forwarding path recognizable by the forwarding hardware according to the type of the forwarding hardware through the conversion equipment, and sending the forwarding path to the forwarding hardware.
In addition, the method 800 further includes: acquiring the current network connection state from the data to be transmitted through forwarding hardware; and sending the data to be transmitted which can not be processed by the forwarding hardware to the first virtual forwarding equipment according to the network connection state, and sending the data.
In addition, the method 800 further includes: after the data to be transmitted is sent through the first virtual forwarding device, according to the network connection state, deleting a corresponding forwarding path existing in forwarding hardware through the first virtual forwarding device, wherein the corresponding forwarding path belongs to the forwarding path of the data to be transmitted.
In addition, the method 800 further includes: if the first virtual forwarding equipment does not have a forwarding path of the data to be transmitted, the data to be transmitted is sent to second virtual forwarding equipment; and after the data to be transmitted is sent through the second virtual forwarding equipment, deleting a corresponding forwarding path existing in forwarding hardware through the second virtual forwarding equipment according to the network connection state, wherein the corresponding forwarding path belongs to the forwarding path of the data to be transmitted.
Sending at least one forwarding path to be updated to forwarding hardware, including: sending at least one forwarding path to be updated to a queue through at least one processing unit; and sending at least one forwarding path to be updated in the queue to forwarding hardware through a processing unit.
Under the condition that the external device sends data to at least one virtual device, sending the data to be transmitted according to a forwarding path through forwarding hardware, the method comprises the following steps: determining corresponding virtual equipment according to a forwarding path through forwarding hardware; and sending the data to be transmitted to the virtual equipment through forwarding hardware.
Wherein, determining the corresponding virtual device according to the forwarding path through the forwarding hardware includes: determining virtual transmission equipment according to a virtual transmission identifier in a forwarding path through forwarding hardware, wherein the virtual transmission equipment is established based on the transmission equipment; and determining the corresponding virtual equipment according to the virtual transmission equipment through forwarding hardware.
Since the foregoing has described in detail specific embodiments of the above-described steps of the process, further description is omitted here. In addition, the method 800 may refer to the steps of the method 200, which are not described in detail. Only to illustrate, the first virtual forwarding device in the method 800 refers to a VS fastpath in the smart network card, and the second virtual forwarding device refers to a VS slowpath in the smart network card.
Based on the same inventive concept, fig. 9 is a flowchart illustrating a method for transmitting data according to another exemplary embodiment of the present application. The method 900 provided by the embodiments of the present application is implemented by forwarding hardware, such as FPGA or ASIC. The method 900 includes the steps of:
step 901: receiving data to be transmitted between at least one virtual device and an external device in the computing device.
Step 902: and determining a forwarding path of the data to be transmitted.
Step 903: and sending out the data to be transmitted according to the forwarding path.
It should be understood that the forwarding hardware has processing capabilities.
Under the condition that the external device sends data to the at least one virtual device, sending the data to be transmitted according to the forwarding path, wherein the sending method comprises the following steps: determining corresponding virtual equipment according to the forwarding path; and sending the data to be transmitted to the virtual equipment.
Wherein, according to the forwarding path, determining the corresponding virtual device includes: determining virtual transmission equipment according to the virtual transmission identifier in the forwarding path, wherein the virtual transmission equipment is established based on transmission hardware; and determining the corresponding virtual equipment according to the virtual transmission equipment through forwarding hardware.
Wherein, the forwarding hardware is arranged in the transmission equipment which is arranged in the computing equipment; the transmission device further includes: the system comprises an independent processing unit, a first virtual forwarding device and a second virtual forwarding device, wherein the first virtual forwarding device runs on the processing unit; wherein the method 900 further comprises: matching data to be transmitted with at least one forwarding path in forwarding hardware; and under the unmatched result, sending the data to be transmitted to the first virtual forwarding equipment for data forwarding.
The method for transmitting the data to be transmitted to the first virtual forwarding device for data forwarding includes: receiving data to be transmitted through first virtual forwarding equipment, and matching the data to be transmitted with at least one forwarding path in the first virtual forwarding equipment; determining a matched forwarding path under the successful matching result; and sending the data to be transmitted according to the forwarding path through the first virtual forwarding equipment.
Wherein, when the external device sends data to at least one virtual device, the sending the data to be transmitted according to the forwarding path includes: determining virtual transmission equipment according to a virtual transmission identifier in a forwarding path through first virtual forwarding equipment; and determining the corresponding virtual equipment according to the virtual transmission equipment through the first virtual forwarding equipment, and sending the data to be transmitted to the corresponding virtual equipment.
In addition, the method 900 further includes: and under the unsuccessful matching result, transmitting the data to be transmitted to second virtual forwarding equipment running on the processing unit through the first virtual forwarding equipment for data forwarding.
Since the foregoing has described in detail specific embodiments of the above-described steps of the process, further description is omitted here. In addition, reference may also be made to the above-mentioned steps of the method 200 for details of the method 900 that are not described in detail. For illustration only, the virtual transmission device in the method 900 refers to the first virtual transmission device in the method 200. The first virtual forwarding device in the method 900 may refer to the second virtual forwarding device in the method 200. The second virtual forwarding device in the method 900 may refer to the fourth virtual forwarding device in the method 200.
Based on the same inventive concept, another exemplary embodiment of the present application provides an intelligent network card, where the intelligent network card is disposed on a computing device, and the computing device includes at least one virtual device; the intelligent network card includes: forwarding hardware such as an FPGA.
The intelligent network card receives data to be transmitted between at least one virtual device in the computing device and the external device through forwarding hardware.
The intelligent network card determines a forwarding path of data to be transmitted through forwarding hardware.
The intelligent network card sends out the data to be transmitted according to the forwarding path through the forwarding hardware.
In addition, the intelligent network card further comprises: the system comprises an independent processing unit, a first virtual forwarding device and a second virtual forwarding device, wherein the first virtual forwarding device runs on the processing unit; the forwarding hardware matches the data to be transmitted with at least one forwarding path in the forwarding hardware; and under the unmatched result, sending the data to be transmitted to the first virtual forwarding equipment for data forwarding.
The method comprises the steps that first virtual forwarding equipment receives data to be transmitted and matches the data to be transmitted with at least one forwarding path in the first virtual forwarding equipment; determining a matched forwarding path under the successful matching result; and sending the data to be transmitted according to the forwarding path.
Under the condition that the external equipment sends data to at least one virtual equipment, the first virtual forwarding equipment determines virtual transmission equipment according to a virtual transmission identifier in a forwarding path, wherein the virtual transmission equipment is created based on the intelligent network card; and determining corresponding virtual equipment according to the virtual transmission equipment, and sending the data to be transmitted to the corresponding virtual equipment.
In addition, under the result of unsuccessful matching, the first virtual forwarding device sends the data to be transmitted to the second virtual forwarding device running on the processing unit for data forwarding.
Wherein, the forwarding hardware is hardware with processing capability, and comprises: FPGA hardware, ASIC hardware, and TOFINO hardware. Virtual devices refer to devices that rely on a computing device to create an independent operating environment.
Since the foregoing has described in detail the specific embodiments of the intelligent network card, no further description is given here. In addition, the contents that cannot be described in detail in the present intelligent network card may refer to the steps in the above method 200. For illustration only, the first virtual forwarding device in the smart network card may refer to the second virtual forwarding device in the method 200. The second virtual forwarding device in the intelligent network card may refer to a fourth virtual forwarding device in the method 200.
It should be understood that the present smart network card also has a processor and memory for storing computer programs. And the processor is used for executing the calculation program.
Based on the same inventive concept as described above, another exemplary embodiment of the present application provides a computing device, such as a cloud server. The computing device comprises the intelligent network card.
Fig. 10 is a schematic structural framework diagram of a data transmission device according to an exemplary embodiment of the present application. The apparatus 1000 may be applied to a computing device, for example, a cloud server, the computing device including a transmitting device and at least one virtual device, the transmitting device including forwarding hardware; the apparatus 1000 comprises a receiving module 1001, a determining module 1002 and a transmitting module 1003; the following detailed description is directed to the functions of the various modules:
a receiving module 1001, configured to receive, through forwarding hardware, data to be transmitted that is transmitted between at least one virtual device and an external device.
The determining module 1002 is configured to determine, through forwarding hardware, a forwarding path of data to be transmitted.
The sending module 1003 is configured to send out, by using the forwarding hardware, the data to be transmitted according to the forwarding path.
Further, the computing device further comprises: the first processing unit is provided with a first virtual forwarding device in operation; wherein, the apparatus 1000 further comprises: the matching module is used for matching the data to be transmitted with at least one forwarding path in the forwarding hardware; the sending module 1003 is further configured to send the data to be transmitted to the first virtual forwarding device through the forwarding hardware for data forwarding under the unmatched result.
In addition, the transmission device further includes: the independent second processing unit runs with a second virtual forwarding device; the matching module is also used for matching the data to be transmitted with at least one forwarding path in the forwarding hardware; the sending module 1003 is further configured to send the data to be transmitted to the second virtual forwarding device through the forwarding hardware for data forwarding under the unmatched result.
A determining module 1002, comprising: the first matching unit is used for matching the data to be transmitted with at least one forwarding path in forwarding hardware; and the first determining unit is used for determining the matched forwarding path under the matching result.
The first matching unit is used for matching the field data in the data to be transmitted with the corresponding field data in at least one forwarding path.
Wherein, in the case that the external device sends data to at least one virtual device, the sending module 1003 includes: a second determining unit, configured to determine, by the forwarding hardware, a corresponding virtual device according to the forwarding path; and the sending unit is used for sending the data to be transmitted to the virtual equipment through the forwarding hardware.
The second determining unit is configured to determine, by using forwarding hardware, a first virtual transmission device according to a virtual transmission identifier in a forwarding path, where the first virtual transmission device is created based on a transmission device; and determining the corresponding virtual equipment according to the first virtual transmission equipment through forwarding hardware.
The second determining unit is used for determining the corresponding external equipment according to the forwarding path through forwarding hardware under the condition that at least one virtual equipment sends data to the external equipment; and the sending unit is used for sending the data to be transmitted to the external equipment through the forwarding hardware.
In addition, the sending module 1003 is further configured to send, by using a first virtual transmission device, to-be-transmitted data from at least one virtual device to the forwarding hardware, where the first virtual transmission device is created based on the transmission device.
Further, the transmission module 1003 includes: the second matching unit is used for receiving the data to be transmitted through the first virtual forwarding equipment and matching the data to be transmitted with at least one forwarding path in the first virtual forwarding equipment; the second determining unit is used for determining the matched forwarding path under the successful matching result; and the sending unit is used for sending the data to be transmitted according to the forwarding path through the first virtual forwarding device.
The sending unit is used for determining a second virtual transmission device through the first virtual forwarding device according to the virtual transmission identifier in the forwarding path, wherein the second virtual transmission device runs on the first processing unit; and determining the corresponding virtual equipment according to the second virtual transmission equipment through the first virtual forwarding equipment, and sending the data to be transmitted to the corresponding virtual equipment.
The second matching unit is used for receiving data to be transmitted through the second virtual forwarding device and matching the data to be transmitted with at least one forwarding path in the second virtual forwarding device; the second determining unit is used for determining the matched forwarding path under the successful matching result; and the sending unit is used for sending the data to be transmitted according to the forwarding path through the second virtual forwarding device.
The sending unit is configured to determine, by using the second virtual forwarding device, a first virtual transmission device according to the virtual transmission identifier in the forwarding path, where the first virtual transmission device is created based on the transmission device; and determining the corresponding virtual equipment according to the first virtual transmission equipment through the second virtual forwarding equipment, and sending the data to be transmitted to the corresponding virtual equipment.
In addition, the apparatus 1000 further comprises: and the sending unit is used for sending the data to be transmitted to third virtual forwarding equipment running on the first processing unit through the first virtual forwarding equipment under the unsuccessful matching result so as to forward the data.
In addition, the matching module is further configured to match the data to be transmitted with at least one forwarding path in the third virtual forwarding device, and determine a matching forwarding path; the apparatus 1000 further comprises: the generation module is used for generating at least one forwarding path to be updated according to the at least one forwarding path determined aiming at the at least one data to be transmitted; a sending module 1003, configured to send at least one forwarding path to be updated to the first virtual forwarding device and the forwarding hardware.
In addition, the generating module is configured to generate at least one forwarding path to be updated that meets the requirements of forwarding hardware for processing, according to the at least one forwarding path determined for the at least one data to be transmitted; the sending module 1003 is further configured to send at least one forwarding path to be updated, which is capable of processing, to the forwarding hardware.
In addition, the sending module 1003 is further configured to send, through the second virtual forwarding device, the data to be transmitted to a fourth virtual forwarding device running on the second processing unit for data forwarding, according to the result of the unsuccessful matching.
In addition, the matching module is further configured to match the data to be transmitted with at least one forwarding path in the fourth virtual forwarding device, and determine a matching forwarding path; the generation module is used for generating at least one forwarding path to be updated according to the at least one forwarding path determined aiming at the at least one data to be transmitted; the sending module 1003 is further configured to send at least one forwarding path to be updated to the second virtual forwarding device and the forwarding hardware.
The generation module is used for generating at least one forwarding path to be updated which meets the processing requirements of forwarding hardware according to at least one forwarding path determined aiming at least one data to be transmitted; the sending module 1003 is further configured to send at least one forwarding path to be updated, which is capable of processing, to the forwarding hardware.
The sending unit is used for sending the forwarding path to be updated to the first conversion equipment through the third virtual forwarding equipment; the sending module 1003 further includes a converting unit, configured to convert, by using the first converting device and according to the type of the forwarding hardware, the forwarding path to be updated into a forwarding path that can be recognized by the forwarding hardware, and send the forwarding path to the forwarding hardware.
In addition, the sending unit is configured to send the forwarding path to be updated to the second conversion device through the fourth virtual forwarding device; and the conversion unit is used for converting the forwarding path to be updated into a forwarding path which can be identified by the forwarding hardware according to the type of the forwarding hardware through the second conversion equipment, and sending the forwarding path to the forwarding hardware.
In addition, the apparatus 1000 further comprises: the acquisition module is used for acquiring the current network connection state from the data to be transmitted through the forwarding hardware; the sending module 1003 is further configured to send the to-be-transmitted data that cannot be processed by the forwarding hardware to the first virtual forwarding device according to the network connection state, and send the data.
In addition, the acquisition module is used for acquiring the current network connection state from the data to be transmitted through forwarding hardware; the sending module 1003 is further configured to send the to-be-transmitted data that cannot be processed by the forwarding hardware to the second virtual forwarding device according to the network connection state, and send the data.
In addition, the apparatus 1000 further comprises: and the deleting module is used for deleting a corresponding forwarding path existing in forwarding hardware through the first virtual forwarding equipment according to the network connection state after the data to be transmitted is sent through the first virtual forwarding equipment, wherein the corresponding forwarding path belongs to the forwarding path of the data to be transmitted.
In addition, the sending module 1003 is further configured to send the data to be transmitted to a third virtual forwarding device if the first virtual forwarding device does not have a forwarding path of the data to be transmitted; and the deleting module is used for deleting a corresponding forwarding path existing in the forwarding hardware through the third virtual forwarding equipment according to the network connection state after the data to be transmitted is sent through the third virtual forwarding equipment, wherein the corresponding forwarding path belongs to the forwarding path of the data to be transmitted.
In addition, the deleting module is further configured to: and after the data to be transmitted is sent through the second virtual forwarding equipment, deleting a corresponding forwarding path existing in forwarding hardware through the second virtual forwarding equipment according to the network connection state, wherein the corresponding forwarding path belongs to the forwarding path of the data to be transmitted.
In addition, the sending module 1003 is further configured to send the data to be transmitted to a fourth virtual forwarding device if there is no forwarding path of the data to be transmitted in the second virtual forwarding device; a deletion module further to: after the data to be transmitted is sent through the fourth virtual forwarding device, according to the network connection state, deleting a corresponding forwarding path existing in the forwarding hardware through the fourth virtual forwarding device, wherein the corresponding forwarding path belongs to the forwarding path of the data to be transmitted.
Further, the transmitting unit is further configured to: sending at least one forwarding path to be updated to a queue through at least one first processing unit; and sending at least one forwarding path to be updated in the queue to forwarding hardware through a first processing unit.
Further, the transmitting unit is further configured to: sending at least one forwarding path to be updated to a queue through at least one second processing unit; and sending at least one forwarding path to be updated in the queue to forwarding hardware through a second processing unit.
In addition, the apparatus 1000 further comprises: and the creating module is used for creating first virtual transmission equipment corresponding to the virtual equipment according to the equipment hardware resources of the transmission equipment.
The transmission equipment comprises a network card; the forwarding hardware comprises an editable electronic device with processing functionality, an integrated circuit with processing functionality or an editable chip with processing functionality.
The transport device includes forwarding hardware with processing capabilities, and the virtual device refers to a device that relies on the computing device to create an independent operating environment.
It should be noted that, for the content that cannot be described in detail in the apparatus 1000, reference may be made to the content of the method 200 described above.
Fig. 11 is a schematic structural framework diagram of a further data transmission device according to a further exemplary embodiment of the present application. The apparatus 1100 may be applied to a transmission device having forwarding hardware, such as an intelligent network card; the apparatus 1100 comprises: the receiving module 1101, the determining module 1102 and the sending module 1103 are described in detail below with respect to the functions of the respective modules:
the receiving module 1101: and receiving data to be transmitted between at least one virtual device in the computing device and the external device through the forwarding hardware.
The determination module 1102: and determining a forwarding path of the data to be transmitted through forwarding hardware.
The sending module 1103: and sending out the data to be transmitted according to the forwarding path through forwarding hardware.
Wherein the transmitting device is provided in the computing device. The forwarding hardware is hardware with processing capabilities, such as an FPGA.
Further, the transmission device further includes: the system comprises an independent processing unit, a first virtual forwarding device and a second virtual forwarding device, wherein the first virtual forwarding device runs on the processing unit; wherein, the apparatus 1100 further comprises: the matching module is used for matching the data to be transmitted with at least one forwarding path in the forwarding hardware; the sending module 1103 is further configured to send, by using the forwarding hardware, the data to be transmitted to the first virtual forwarding device for data forwarding, according to the result of the mismatch.
The sending module 1103 includes: the matching unit is used for receiving data to be transmitted through the first virtual forwarding equipment and matching the data to be transmitted with at least one forwarding path in the first virtual forwarding equipment; a determining unit, configured to determine a matched forwarding path according to a result of successful matching; and the sending unit is used for sending the data to be transmitted according to the forwarding path through the first virtual forwarding device.
The sending unit is used for determining virtual transmission equipment through the first virtual forwarding equipment according to a virtual transmission identifier in a forwarding path, wherein the virtual transmission equipment is created based on the transmission equipment; and determining the corresponding virtual equipment according to the virtual transmission equipment through the first virtual forwarding equipment, and sending the data to be transmitted to the corresponding virtual equipment.
Furthermore, the sending module 1103 is further configured to: and under the unsuccessful matching result, transmitting the data to be transmitted to second virtual forwarding equipment running on the processing unit through the first virtual forwarding equipment for data forwarding.
Furthermore, the matching unit is further configured to: matching the data to be transmitted with at least one forwarding path in the second virtual forwarding equipment, and determining the matched forwarding path; the apparatus 1100 further includes a generating module, configured to generate at least one forwarding path to be updated according to at least one forwarding path determined for at least one data to be transmitted; the sending module 1103 is further configured to send at least one forwarding path to be updated to the first virtual forwarding device and the forwarding hardware.
The sending unit is used for sending the forwarding path to be updated to the conversion equipment through the second virtual forwarding equipment; and converting the forwarding path to be updated into a forwarding path recognizable by the forwarding hardware according to the type of the forwarding hardware through the conversion equipment, and sending the forwarding path to the forwarding hardware.
In addition, the apparatus 1100 further comprises: the acquisition module is used for acquiring the current network connection state from the data to be transmitted through forwarding hardware; the sending module 1103 is further configured to send, according to the network connection state, to-be-transmitted data that cannot be processed by the forwarding hardware to the first virtual forwarding device, and send the data.
In addition, the apparatus 1100 further comprises: and the deleting module is used for deleting a corresponding forwarding path existing in forwarding hardware through the first virtual forwarding equipment according to the network connection state after the data to be transmitted is sent through the first virtual forwarding equipment, wherein the corresponding forwarding path belongs to the forwarding path of the data to be transmitted.
In addition, the sending module 1103 is further configured to send the data to be transmitted to the second virtual forwarding device when the first virtual forwarding device does not have a forwarding path of the data to be transmitted; and the deleting module is further configured to delete, by the second virtual forwarding device, a corresponding forwarding path existing in the forwarding hardware after the data to be transmitted is sent by the second virtual forwarding device, where the corresponding forwarding path belongs to a forwarding path of the data to be transmitted, according to the network connection state.
The sending unit is used for sending at least one forwarding path to be updated to the queue through at least one processing unit; and sending at least one forwarding path to be updated in the queue to forwarding hardware through a processing unit.
The sending unit is used for determining the corresponding virtual equipment according to the forwarding path through forwarding hardware under the condition that the external equipment sends data to at least one virtual equipment; and sending the data to be transmitted to the virtual equipment through forwarding hardware.
The sending unit is used for determining virtual transmission equipment according to a virtual transmission identifier in a forwarding path through forwarding hardware, and the virtual transmission equipment is established based on the transmission equipment; and determining the corresponding virtual equipment according to the virtual transmission equipment through forwarding hardware.
For parts of the content that cannot be mentioned by the apparatus 1100, reference may be made to the content of the apparatus 1000 described above.
Fig. 12 is a schematic structural framework diagram of a further data transmission device according to a further exemplary embodiment of the present application. The apparatus 1200 may be applied to forwarding hardware such as an FPGA or an ASIC. The apparatus 1200 includes: the receiving module 1201, the determining module 1202, and the sending module 1203, the functions of each module are described in detail as follows:
a receiving module 1201, configured to receive data to be transmitted between at least one virtual device in a computing device and an external device.
The determination module 1202: for determining a forwarding path for data to be transmitted.
The sending module 1203: and the data transmission device is used for sending out the data to be transmitted according to the forwarding path.
Wherein, in the case that the external device sends data to at least one virtual device, the sending module 1203 includes: a determining unit, configured to determine, according to the forwarding path, a corresponding virtual device; and the sending unit is used for sending the data to be transmitted to the virtual equipment.
The determining unit is used for determining virtual transmission equipment according to the virtual transmission identifier in the forwarding path, and the virtual transmission equipment is established based on transmission hardware; and determining the corresponding virtual equipment according to the virtual transmission equipment through forwarding hardware.
Wherein, the forwarding hardware is arranged in the transmission equipment which is arranged in the computing equipment; the transmission device further includes: the system comprises an independent processing unit, a first virtual forwarding device and a second virtual forwarding device, wherein the first virtual forwarding device runs on the processing unit; wherein, the apparatus 1200 further comprises: the matching module is used for matching the data to be transmitted with at least one forwarding path in the forwarding hardware; a sending module 1203, configured to send the data to be transmitted to the first virtual forwarding device for data forwarding under the unmatched result.
The sending module 1203 includes: the matching unit is used for receiving data to be transmitted through the first virtual forwarding equipment and matching the data to be transmitted with at least one forwarding path in the first virtual forwarding equipment; a determining unit, configured to determine a matched forwarding path according to a result of successful matching; and the sending unit is used for sending the data to be transmitted according to the forwarding path through the first virtual forwarding device.
The sending unit is used for determining the virtual transmission equipment through the first virtual forwarding equipment according to the virtual transmission identifier in the forwarding path under the condition that the external equipment sends data to at least one virtual equipment; and determining the corresponding virtual equipment according to the virtual transmission equipment through the first virtual forwarding equipment, and sending the data to be transmitted to the corresponding virtual equipment.
Further, the transmitting unit is further configured to: and under the unsuccessful matching result, transmitting the data to be transmitted to second virtual forwarding equipment running on the processing unit through the first virtual forwarding equipment for data forwarding.
Wherein the forwarding hardware is hardware with processing capabilities.
For some contents that cannot be mentioned in the apparatus 1200, the contents of the apparatus 1000 described above may be referred to.
Having described the internal functions and structure of the transmission apparatus 1000 shown in fig. 10, in one possible design, the structure of the transmission apparatus 1000 shown in fig. 10 may be implemented as a computing device, such as a cloud server, the computing device including a transmission device and at least one virtual device, the transmission device including forwarding hardware; as shown in fig. 13, the apparatus 1300 may further include: a memory 1301 and a processor 1302;
a memory 1301 for storing a computer program;
a processor 1302 for executing a computer program for: receiving data to be transmitted between at least one virtual device and external equipment through forwarding hardware; determining a forwarding path of data to be transmitted through forwarding hardware; and sending out the data to be transmitted according to the forwarding path through forwarding hardware.
Further, computing device 1300 also includes: the first processing unit is provided with a first virtual forwarding device in operation; wherein, the processor 1302 is further configured to: matching data to be transmitted with at least one forwarding path in forwarding hardware; and under the unmatched result, the data to be transmitted are sent to the first virtual forwarding equipment through the forwarding hardware for data forwarding.
In addition, the transmission device further includes: the independent second processing unit runs with a second virtual forwarding device; wherein, the processor 1302 is further configured to: matching data to be transmitted with at least one forwarding path in forwarding hardware; and under the unmatched result, the data to be transmitted are sent to the second virtual forwarding equipment through the forwarding hardware for data forwarding.
The processor 1302 is specifically configured to: matching data to be transmitted with at least one forwarding path in forwarding hardware; and determining the matched forwarding path under the matching result.
The processor 1302 is specifically configured to: and matching the field data in the data to be transmitted with the corresponding field data in at least one forwarding path.
Wherein, in the case that the external device sends data to the at least one virtual device, the processor 1202 is specifically configured to: determining corresponding virtual equipment according to a forwarding path through forwarding hardware; and sending the data to be transmitted to the virtual equipment through forwarding hardware.
The processor 1302 is specifically configured to: determining, by forwarding hardware, a first virtual transmission device according to a virtual transmission identifier in a forwarding path, the first virtual transmission device being created based on a transmission device; and determining the corresponding virtual equipment according to the first virtual transmission equipment through forwarding hardware.
Wherein, in a case that at least one virtual device sends data to an external device, the processor 1202 is specifically configured to: determining corresponding external equipment according to the forwarding path through forwarding hardware; and transmitting the data to be transmitted to the external equipment through the forwarding hardware.
Further, processor 1302 is further configured to: and sending the data to be transmitted from the at least one virtual device to forwarding hardware through a first virtual transmission device, wherein the first virtual transmission device is created based on the transmission device.
Further, the processor 1302 is specifically configured to: receiving data to be transmitted through first virtual forwarding equipment, and matching the data to be transmitted with at least one forwarding path in the first virtual forwarding equipment; determining a matched forwarding path under the successful matching result; and sending the data to be transmitted according to the forwarding path through the first virtual forwarding equipment.
Wherein, in the case that the external device sends data to at least one virtual device, the processor 1302 is specifically configured to: determining a second virtual transmission device according to the virtual transmission identifier in the forwarding path through the first virtual forwarding device, wherein the second virtual transmission device runs on the first processing unit; and determining the corresponding virtual equipment according to the second virtual transmission equipment through the first virtual forwarding equipment, and sending the data to be transmitted to the corresponding virtual equipment.
The processor 1302 is specifically configured to: receiving data to be transmitted through second virtual forwarding equipment, and matching the data to be transmitted with at least one forwarding path in the second virtual forwarding equipment; determining a matched forwarding path under the successful matching result; and sending the data to be transmitted according to the forwarding path through the second virtual forwarding equipment.
The processor 1302 is specifically configured to: determining a first virtual transmission device according to a virtual transmission identifier in a forwarding path through a second virtual forwarding device, wherein the first virtual transmission device is created based on the transmission device; and determining the corresponding virtual equipment according to the first virtual transmission equipment through the second virtual forwarding equipment, and sending the data to be transmitted to the corresponding virtual equipment.
Further, processor 1302 is further configured to: and under the unsuccessful matching result, transmitting the data to be transmitted to third virtual forwarding equipment running on the first processing unit through the first virtual forwarding equipment for data forwarding.
Further, processor 1302 is further configured to: matching the data to be transmitted with at least one forwarding path in the third virtual forwarding device, and determining the matched forwarding path; generating at least one forwarding path to be updated according to at least one forwarding path determined for at least one data to be transmitted; and sending at least one forwarding path to be updated to the first virtual forwarding equipment and forwarding hardware.
Further, processor 1302 is further configured to: generating at least one forwarding path to be updated which meets the processing requirement of forwarding hardware according to at least one forwarding path determined aiming at least one data to be transmitted; and sending at least one forwarding path to be updated which can be processed to the forwarding hardware.
Further, processor 1302 is further configured to: and under the unsuccessful matching result, transmitting the data to be transmitted to fourth virtual forwarding equipment running on the second processing unit through the second virtual forwarding equipment for data forwarding.
Further, processor 1302 is further configured to: matching the data to be transmitted with at least one forwarding path in the fourth virtual forwarding device, and determining the matched forwarding path; generating at least one forwarding path to be updated according to at least one forwarding path determined for at least one data to be transmitted; and sending at least one forwarding path to be updated to the second virtual forwarding equipment and forwarding hardware.
The processor 1302 is specifically configured to: generating at least one forwarding path to be updated which meets the processing requirement of forwarding hardware according to at least one forwarding path determined aiming at least one data to be transmitted; the processor 1302 is further configured to send at least one forwarding path to be updated, which can be processed, to the forwarding hardware.
The processor 1302 is specifically configured to: sending the forwarding path to be updated to the first conversion equipment through the third virtual forwarding equipment; and converting the forwarding path to be updated into a forwarding path recognizable by the forwarding hardware according to the type of the forwarding hardware through the first conversion equipment, and sending the forwarding path to the forwarding hardware.
Further, the processor 1302 is specifically configured to: sending the forwarding path to be updated to the second conversion equipment through the fourth virtual forwarding equipment; and converting the forwarding path to be updated into a forwarding path recognizable by the forwarding hardware according to the type of the forwarding hardware through the second conversion equipment, and sending the forwarding path to the forwarding hardware.
Further, processor 1302 is further configured to: acquiring the current network connection state from the data to be transmitted through the forwarding hardware; and sending the data to be transmitted which can not be processed by the forwarding hardware to the first virtual forwarding equipment according to the network connection state, and sending the data.
Further, the processor 1302 is specifically configured to: acquiring the current network connection state from the data to be transmitted through forwarding hardware; a processor 1302, further configured to: and sending the data to be transmitted which can not be processed by the forwarding hardware to the second virtual forwarding equipment according to the network connection state, and sending the data.
Further, processor 1302 is further configured to: after the data to be transmitted is sent through the first virtual forwarding device, according to the network connection state, deleting a corresponding forwarding path existing in forwarding hardware through the first virtual forwarding device, wherein the corresponding forwarding path belongs to the forwarding path of the data to be transmitted.
Further, processor 1302 is further configured to: if the first virtual forwarding equipment does not have a forwarding path of the data to be transmitted, the data to be transmitted is sent to third virtual forwarding equipment; and the deleting module is used for deleting a corresponding forwarding path existing in the forwarding hardware through the third virtual forwarding equipment according to the network connection state after the data to be transmitted is sent through the third virtual forwarding equipment, wherein the corresponding forwarding path belongs to the forwarding path of the data to be transmitted.
Further, processor 1302 is further configured to: and after the data to be transmitted is sent through the second virtual forwarding equipment, deleting a corresponding forwarding path existing in forwarding hardware through the second virtual forwarding equipment according to the network connection state, wherein the corresponding forwarding path belongs to the forwarding path of the data to be transmitted.
Further, processor 1302 is further configured to: if the second virtual forwarding equipment does not have a forwarding path of the data to be transmitted, the data to be transmitted is sent to fourth virtual forwarding equipment; after the data to be transmitted is sent through the fourth virtual forwarding device, according to the network connection state, deleting a corresponding forwarding path existing in the forwarding hardware through the fourth virtual forwarding device, wherein the corresponding forwarding path belongs to the forwarding path of the data to be transmitted.
Further, processor 1302 is further configured to: sending at least one forwarding path to be updated to a queue through at least one first processing unit; and sending at least one forwarding path to be updated in the queue to forwarding hardware through a first processing unit.
Further, processor 1302 is further configured to: sending at least one forwarding path to be updated to a queue through at least one second processing unit; and sending at least one forwarding path to be updated in the queue to forwarding hardware through a second processing unit.
Further, processor 1302 is further configured to: and creating a first virtual transmission device corresponding to the virtual device according to the device hardware resource of the transmission device.
The transmission equipment comprises a network card; the forwarding hardware comprises an editable electronic device with processing functionality, an integrated circuit with processing functionality or an editable chip with processing functionality.
The transport device includes forwarding hardware with processing capabilities, and the virtual device refers to a device that relies on the computing device to create an independent operating environment.
It should be noted that, for the content that cannot be described in detail in the apparatus 1300, reference may be made to the content of the method 200 described above.
In addition, embodiments of the present invention provide a computer storage medium, and the computer program, when executed by one or more processors, causes the one or more processors to implement the steps of the transmission method of data in the method embodiment of fig. 2.
Having described the internal functions and structure of the transmission apparatus 1100 shown in fig. 11, in one possible design, the structure of the transmission apparatus 1100 shown in fig. 11 may be implemented as a transmission device with forwarding hardware, i.e., a computing device (hereinafter may also be referred to as a transmission device), such as an intelligent network card. As shown in fig. 14, the computing device 1400 may include: a memory 1401 and a processor 1402;
a memory 1401 for storing a computer program;
a processor 1402 for executing a computer program for: receiving data to be transmitted between at least one virtual device and external devices in the computing device through forwarding hardware; determining a forwarding path of data to be transmitted through forwarding hardware; and sending out the data to be transmitted according to the forwarding path through forwarding hardware.
Wherein the computing device 1400 is disposed in a cloud computing device. The forwarding hardware is hardware with processing capabilities, such as an FPGA.
Further, the computing device 1400 further includes: the system comprises an independent processing unit, a first virtual forwarding device and a second virtual forwarding device, wherein the first virtual forwarding device runs on the processing unit; wherein, the processor 1402 is further configured to: matching data to be transmitted with at least one forwarding path in forwarding hardware; and under the unmatched result, the data to be transmitted are sent to the first virtual forwarding equipment through the forwarding hardware for data forwarding.
The processor 1402 is specifically configured to: receiving data to be transmitted through first virtual forwarding equipment, and matching the data to be transmitted with at least one forwarding path in the first virtual forwarding equipment; determining a matched forwarding path under the successful matching result; and sending the data to be transmitted according to the forwarding path through the first virtual forwarding equipment.
Wherein, in the case that the external device sends data to the at least one virtual device, the processor 1402 is specifically configured to: determining, by the first virtual forwarding device, a virtual transmission device according to the virtual transmission identifier in the forwarding path, the virtual transmission device being created based on the computing device 1400; and determining the corresponding virtual equipment according to the virtual transmission equipment through the first virtual forwarding equipment, and sending the data to be transmitted to the corresponding virtual equipment.
Further, the processor 1402 is further configured to: and under the unsuccessful matching result, transmitting the data to be transmitted to second virtual forwarding equipment running on the processing unit through the first virtual forwarding equipment for data forwarding.
Further, the processor 1402 is further configured to: matching the data to be transmitted with at least one forwarding path in the second virtual forwarding equipment, and determining the matched forwarding path; generating at least one forwarding path to be updated according to at least one forwarding path determined for at least one data to be transmitted; and sending at least one forwarding path to be updated to the first virtual forwarding equipment and forwarding hardware.
The processor 1402 is specifically configured to: sending the forwarding path to be updated to the conversion equipment through the second virtual forwarding equipment; and converting the forwarding path to be updated into a forwarding path recognizable by the forwarding hardware according to the type of the forwarding hardware through the conversion equipment, and sending the forwarding path to the forwarding hardware.
Further, the processor 1402 is further configured to: acquiring the current network connection state from the data to be transmitted through forwarding hardware; and sending the data to be transmitted which can not be processed by the forwarding hardware to the first virtual forwarding equipment according to the network connection state, and sending the data.
Further, the processor 1402 is further configured to: after the data to be transmitted is sent through the first virtual forwarding device, according to the network connection state, deleting a corresponding forwarding path existing in forwarding hardware through the first virtual forwarding device, wherein the corresponding forwarding path belongs to the forwarding path of the data to be transmitted.
Further, the processor 1402 is further configured to: if the first virtual forwarding equipment does not have a forwarding path of the data to be transmitted, the data to be transmitted is sent to second virtual forwarding equipment; and after the data to be transmitted is sent through the second virtual forwarding equipment, deleting a corresponding forwarding path existing in forwarding hardware through the second virtual forwarding equipment according to the network connection state, wherein the corresponding forwarding path belongs to the forwarding path of the data to be transmitted.
The processor 1402 is specifically configured to: sending at least one forwarding path to be updated to a queue through at least one processing unit; and sending at least one forwarding path to be updated in the queue to forwarding hardware through a processing unit.
Wherein, in the case that the external device sends data to the at least one virtual device, the processor 1402 is specifically configured to: determining corresponding virtual equipment according to a forwarding path through forwarding hardware; and sending the data to be transmitted to the virtual equipment through forwarding hardware.
The processor 1402 is specifically configured to: determining, by forwarding hardware, a virtual transport device based on the virtual transport identifier in the forwarding path, the virtual transport device being created by the computing device 1300; and determining the corresponding virtual equipment according to the virtual transmission equipment through forwarding hardware.
It should be noted that, for some contents that the apparatus 1400 fails to mention, reference may be made to the contents of the apparatus 1300 described above.
In addition, an embodiment of the present invention provides a computer storage medium, and the computer program, when executed by one or more processors, causes the one or more processors to implement the steps of the transmission method of data in the method embodiment of fig. 8.
Having described the internal functions and structure of the transmission apparatus 1200 shown in fig. 12, in one possible design, the structure of the transmission apparatus 1200 shown in fig. 12 may be implemented as forwarding hardware, i.e., a computing device (hereinafter may also be referred to as forwarding hardware), such as an FPGA or an ASIC. As shown in fig. 15, the computing device 1500 may include: a memory 1501 and a processor 1502;
a memory 1501 for storing a computer program;
a processor 1502 for executing a computer program for: receiving data to be transmitted between at least one virtual device and external devices in the computing device; determining a forwarding path of data to be transmitted; and sending out the data to be transmitted according to the forwarding path.
In a case where the external device sends data to at least one virtual device, the processor 1502 is specifically configured to: determining corresponding virtual equipment according to the forwarding path; and sending the data to be transmitted to the virtual equipment.
The processor 1502 is specifically configured to: determining virtual transmission equipment according to the virtual transmission identifier in the forwarding path, wherein the virtual transmission equipment is established based on transmission hardware; and determining the corresponding virtual equipment according to the virtual transmission equipment through forwarding hardware.
Wherein the computing device 1500 is disposed in a transmitting device disposed in a computing device; the transmission device further includes: the system comprises an independent processing unit, a first virtual forwarding device and a second virtual forwarding device, wherein the first virtual forwarding device runs on the processing unit; wherein, the processor 1502 is further configured to: matching data to be transmitted with at least one forwarding path in the computing device 1500; and under the unmatched result, sending the data to be transmitted to the first virtual forwarding equipment for data forwarding.
The processor 1502 is specifically configured to: receiving data to be transmitted through first virtual forwarding equipment, and matching the data to be transmitted with at least one forwarding path in the first virtual forwarding equipment; determining a matched forwarding path under the successful matching result; and sending the data to be transmitted according to the forwarding path through the first virtual forwarding equipment.
In a case where the external device sends data to at least one virtual device, the processor 1502 is specifically configured to: determining virtual transmission equipment according to a virtual transmission identifier in a forwarding path through first virtual forwarding equipment; and determining the corresponding virtual equipment according to the virtual transmission equipment through the first virtual forwarding equipment, and sending the data to be transmitted to the corresponding virtual equipment.
Further, the processor 1502 is further configured to: and under the unsuccessful matching result, transmitting the data to be transmitted to second virtual forwarding equipment running on the processing unit through the first virtual forwarding equipment for data forwarding.
Wherein the forwarding hardware is hardware with processing capabilities.
For some contents that cannot be mentioned by the apparatus 1500, the contents of the apparatus 1300 described above may be referred to.
In addition, an embodiment of the present invention provides a computer storage medium, and the computer program, when executed by one or more processors, causes the one or more processors to implement the steps of the transmission method of data in the method embodiment of fig. 9.
Based on the same inventive concept as described above, another exemplary embodiment of the present application provides an electronic device, such as an FPGA or an ASIC. The electronic device comprises a storage unit and a logic unit;
a storage unit for storing an electronic device program;
a logic unit for performing logic functions of an electronic device program for: receiving data to be transmitted between at least one virtual device and external devices in the computing device; determining a forwarding path of data to be transmitted; and sending out the data to be transmitted according to the forwarding path.
It should be noted that the electronic device is not described in detail with reference to the computing device 1400.
In addition, in some of the flows described in the above embodiments and the drawings, a plurality of operations are included in a specific order, but it should be clearly understood that the operations may be executed out of the order presented herein or in parallel, and the sequence numbers of the operations, such as 201, 202, 203, etc., are merely used for distinguishing different operations, and the sequence numbers themselves do not represent any execution order. Additionally, the flows may include more or fewer operations, and the operations may be performed sequentially or in parallel. It should be noted that, the descriptions of "first", "second", etc. in this document are used for distinguishing different messages, devices, modules, etc., and do not represent a sequential order, nor limit the types of "first" and "second" to be different.
The above-described embodiments of the apparatus are merely illustrative, and the units described as separate parts may or may not be physically separate, and parts displayed as units may or may not be physical units, may be located in one place, or may be distributed on a plurality of network units. Some or all of the modules may be selected according to actual needs to achieve the purpose of the solution of the present embodiment. One of ordinary skill in the art can understand and implement it without inventive effort.
Through the above description of the embodiments, those skilled in the art will clearly understand that each embodiment can be implemented by adding a necessary general hardware platform, and of course, can also be implemented by a combination of hardware and software. With this understanding in mind, the above-described aspects and portions of the present technology which contribute substantially or in part to the prior art may be embodied in the form of a computer program product, which may be embodied on one or more computer-usable storage media having computer-usable program code embodied therein, including without limitation disk storage, CD-ROM, optical storage, and the like.
The present invention is described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each flow and/or block of the flow diagrams and/or block diagrams, and combinations of flows and/or blocks in the flow diagrams and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, embedded processor, or other programmable multimedia data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable multimedia data processing apparatus, create means for implementing the functions specified in the flowchart flow or flows and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable multimedia data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function specified in the flowchart flow or flows and/or block diagram block or blocks.
These computer program instructions may also be loaded onto a computer or other programmable multimedia data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart flow or flows and/or block diagram block or blocks.
In a typical configuration, a computing device includes one or more processors (CPUs), input/output interfaces, network interfaces, and memory.
The memory may include forms of volatile memory in a computer readable medium, Random Access Memory (RAM) and/or non-volatile memory, such as Read Only Memory (ROM) or flash memory (flash RAM). Memory is an example of a computer-readable medium.
Computer-readable media, including both non-transitory and non-transitory, removable and non-removable media, may implement information storage by any method or technology. The information may be computer readable instructions, data structures, modules of a program, or other data. Examples of computer storage media include, but are not limited to, phase change memory (PRAM), Static Random Access Memory (SRAM), Dynamic Random Access Memory (DRAM), other types of Random Access Memory (RAM), Read Only Memory (ROM), Electrically Erasable Programmable Read Only Memory (EEPROM), flash memory or other memory technology, compact disc read only memory (CD-ROM), Digital Versatile Discs (DVD) or other optical storage, magnetic cassettes, magnetic tape magnetic disk storage or other magnetic storage devices, or any other non-transmission medium that can be used to store information that can be accessed by a computing device. As defined herein, a computer readable medium does not include a transitory computer readable medium such as a modulated data signal and a carrier wave.
Finally, it should be noted that: the above examples are only intended to illustrate the technical solution of the present invention, but not to limit it; although the present invention has been described in detail with reference to the foregoing embodiments, it will be understood by those of ordinary skill in the art that: the technical solutions described in the foregoing embodiments may still be modified, or some technical features may be equivalently replaced; and such modifications or substitutions do not depart from the spirit and scope of the corresponding technical solutions of the embodiments of the present invention.

Claims (66)

1. The data transmission method is applicable to a computing device, wherein the computing device comprises a transmission device and at least one virtual device, and the transmission device comprises forwarding hardware; the method comprises the following steps:
receiving, by the forwarding hardware, data to be transmitted that is transmitted between the at least one virtual device and an external device;
determining a forwarding path of the data to be transmitted through the forwarding hardware;
and sending the data to be transmitted out through the forwarding hardware according to the forwarding path.
2. The method of claim 1, wherein the computing device further comprises: the system comprises a first processing unit, a second processing unit and a third processing unit, wherein a first virtual forwarding device runs on the first processing unit;
wherein the method further comprises:
matching the data to be transmitted with at least one forwarding path in the forwarding hardware;
and under the unmatched result, the data to be transmitted are sent to the first virtual forwarding equipment through the forwarding hardware for data forwarding.
3. The method of claim 1, wherein the transmitting device further comprises: the single second processing unit runs with a second virtual forwarding device;
wherein the method further comprises:
matching the data to be transmitted with at least one forwarding path in the forwarding hardware;
and under the unmatched result, the data to be transmitted is sent to the second virtual forwarding equipment through the forwarding hardware for data forwarding.
4. The method of claim 1, wherein the determining, by the forwarding hardware, a forwarding path for the data to be transmitted comprises:
the data to be transmitted is matched with at least one forwarding path in the forwarding hardware;
and determining the matched forwarding path under the matching result.
5. The method of claim 4, wherein matching the data to be transmitted to at least one forwarding path in the forwarding hardware comprises:
and matching the field data in the data to be transmitted with the corresponding field data in at least one forwarding path.
6. The method according to claim 1, wherein, when the external device sends data to the at least one virtual device, the sending out, by the forwarding hardware, the data to be transmitted according to the forwarding path includes:
determining, by the forwarding hardware, a corresponding virtual device according to the forwarding path;
and sending the data to be transmitted to the virtual equipment through the forwarding hardware.
7. The method of claim 6, wherein determining, by the forwarding hardware, the corresponding virtual device according to the forwarding path comprises:
determining, by the forwarding hardware, a first virtual transmission device according to a virtual transmission identifier in the forwarding path, the first virtual transmission device being created based on the transmission device;
and determining the corresponding virtual equipment according to the first virtual transmission equipment through the forwarding hardware.
8. The method according to claim 1, wherein, in a case where at least one virtual device sends data to the external device, the sending out, by the forwarding hardware, the data to be transmitted according to the forwarding path includes:
determining corresponding external equipment according to the forwarding path through the forwarding hardware;
and sending the data to be transmitted to the external equipment through the forwarding hardware.
9. The method of claim 8, further comprising:
and sending the data to be transmitted from at least one virtual device to the forwarding hardware through a first virtual transmission device, wherein the first virtual transmission device is created based on the transmission device.
10. The method according to claim 2, wherein the sending, by the forwarding hardware, the data to be transmitted to the first virtual forwarding device for data forwarding includes:
receiving the data to be transmitted through the first virtual forwarding device, and matching the data to be transmitted with at least one forwarding path in the first virtual forwarding device;
determining a matched forwarding path under the successful matching result;
and sending the data to be transmitted according to the forwarding path through the first virtual forwarding device.
11. The method according to claim 10, wherein, in a case where the external device sends data to the at least one virtual device, the sending the data to be transmitted according to the forwarding path includes:
determining, by the first virtual forwarding device, a second virtual transmission device according to a virtual transmission identifier in the forwarding path, where the second virtual transmission device operates on the first processing unit;
and determining the corresponding virtual equipment according to the second virtual transmission equipment through the first virtual forwarding equipment, and sending the data to be transmitted to the corresponding virtual equipment.
12. The method according to claim 3, wherein the sending, by the forwarding hardware, the data to be transmitted to the second virtual forwarding device for data forwarding includes:
receiving the data to be transmitted through the second virtual forwarding equipment, and matching the data to be transmitted with at least one forwarding path in the second virtual forwarding equipment;
determining a matched forwarding path under the successful matching result;
and sending the data to be transmitted according to the forwarding path through the second virtual forwarding device.
13. The method according to claim 12, wherein, in a case where the external device sends data to the at least one virtual device, the sending the data to be transmitted according to the forwarding path includes:
determining, by the second virtual forwarding device, a first virtual transmission device according to a virtual transmission identifier in the forwarding path, the first virtual transmission device being created based on the transmission device;
and determining the corresponding virtual equipment according to the first virtual transmission equipment through the second virtual forwarding equipment, and sending the data to be transmitted to the corresponding virtual equipment.
14. The method of claim 10, further comprising:
and under the result of unsuccessful matching, sending the data to be transmitted to third virtual forwarding equipment running on the first processing unit through the first virtual forwarding equipment for data forwarding.
15. The method of claim 14, further comprising:
matching the data to be transmitted with at least one forwarding path in the third virtual forwarding device, and determining the matched forwarding path;
generating at least one forwarding path to be updated according to at least one forwarding path determined for at least one data to be transmitted;
and sending the at least one forwarding path to be updated to the first virtual forwarding device and the forwarding hardware.
16. The method of claim 15, further comprising:
generating at least one forwarding path to be updated which meets the processing requirements of forwarding hardware according to at least one forwarding path determined aiming at least one data to be transmitted;
and sending the at least one forwarding path to be updated, which can be processed, to the forwarding hardware.
17. The method of claim 12, further comprising:
and under the result of unsuccessful matching, sending the data to be transmitted to fourth virtual forwarding equipment running on the second processing unit through the second virtual forwarding equipment, and forwarding the data.
18. The method of claim 17, further comprising:
matching the data to be transmitted with at least one forwarding path in the fourth virtual forwarding device, and determining the matched forwarding path;
generating at least one forwarding path to be updated according to at least one forwarding path determined for at least one data to be transmitted;
and sending the at least one forwarding path to be updated to the second virtual forwarding device and the forwarding hardware.
19. The method of claim 18, further comprising:
generating at least one forwarding path to be updated which meets the processing requirements of forwarding hardware according to at least one forwarding path determined aiming at least one data to be transmitted;
and sending the at least one forwarding path to be updated, which can be processed, to the forwarding hardware.
20. The method of claim 15, wherein sending the at least one forwarding path to be updated to the forwarding hardware comprises:
sending the forwarding path to be updated to a first conversion device through the third virtual forwarding device;
and converting the forwarding path to be updated into a forwarding path recognizable by the forwarding hardware according to the type of the forwarding hardware through the first conversion equipment, and sending the forwarding path to the forwarding hardware.
21. The method of claim 18, wherein sending the at least one forwarding path to be updated to the forwarding hardware comprises:
sending the forwarding path to be updated to a second conversion device through the fourth virtual forwarding device;
and converting the forwarding path to be updated into a forwarding path recognizable by the forwarding hardware according to the type of the forwarding hardware through the second conversion equipment, and sending the forwarding path to the forwarding hardware.
22. The method of claim 2, further comprising:
acquiring the current network connection state from the data to be transmitted through the forwarding hardware;
and sending the data to be transmitted which cannot be processed by the forwarding hardware to the first virtual forwarding equipment according to the network connection state, and sending the data.
23. The method of claim 3, further comprising:
acquiring the current network connection state from the data to be transmitted through the forwarding hardware;
and sending the data to be transmitted which cannot be processed by the forwarding hardware to the second virtual forwarding equipment according to the network connection state, and sending the data.
24. The method of claim 22, further comprising:
after the data to be transmitted is sent by the first virtual forwarding device, deleting a corresponding forwarding path existing in the forwarding hardware by the first virtual forwarding device according to the network connection state, wherein the corresponding forwarding path belongs to the forwarding path of the data to be transmitted.
25. The method of claim 24, further comprising:
if the first virtual forwarding device does not have the forwarding path of the data to be transmitted, sending the data to be transmitted to a third virtual forwarding device;
after the data to be transmitted is sent by the third virtual forwarding device, deleting a corresponding forwarding path existing in the forwarding hardware by the third virtual forwarding device according to the network connection state, wherein the corresponding forwarding path belongs to the forwarding path of the data to be transmitted.
26. The method of claim 23, further comprising:
after the data to be transmitted is sent by the second virtual forwarding device, deleting a corresponding forwarding path existing in the forwarding hardware by the second virtual forwarding device according to the network connection state, wherein the corresponding forwarding path belongs to the forwarding path of the data to be transmitted.
27. The method of claim 26, further comprising:
if the second virtual forwarding device does not have the forwarding path of the data to be transmitted, sending the data to be transmitted to a fourth virtual forwarding device;
after the data to be transmitted is sent by the fourth virtual forwarding device, deleting a corresponding forwarding path existing in the forwarding hardware by the fourth virtual forwarding device according to the network connection state, wherein the corresponding forwarding path belongs to the forwarding path of the data to be transmitted.
28. The method of claim 15, wherein sending the at least one forwarding path to be updated to the forwarding hardware comprises:
sending the at least one forwarding path to be updated to a queue through at least one first processing unit;
and sending the at least one forwarding path to be updated in the queue to forwarding hardware through the first processing unit.
29. The method of claim 18, wherein sending the at least one forwarding path to be updated to the forwarding hardware comprises:
sending the at least one forwarding path to be updated to a queue through at least one second processing unit;
and sending the at least one forwarding path to be updated in the queue to forwarding hardware through one second processing unit.
30. The method of claim 13, further comprising:
and creating a first virtual transmission device corresponding to the virtual device according to the device hardware resource of the transmission device.
31. The method of any one of claims 1-30, wherein the transmission device comprises a network card; the forwarding hardware comprises an editable electronic device with processing functionality, an integrated circuit with processing functionality or an editable chip with processing functionality.
32. The method of any of claims 1-30, wherein the transport device comprises forwarding hardware with processing capabilities, and wherein the virtual device is a device that relies on the computing device to create an independent operating environment.
33. A data transmission method is characterized in that the method is suitable for transmission equipment with forwarding hardware; the method comprises the following steps:
receiving data to be transmitted between at least one virtual device in the computing device and the external device through the forwarding hardware;
determining a forwarding path of the data to be transmitted through the forwarding hardware;
and sending the data to be transmitted out through the forwarding hardware according to the forwarding path.
34. The method of claim 33, wherein the transmitting device is disposed in the computing device.
35. The method of claim 33, wherein the transmitting device further comprises: an individual processing unit on which a first virtual forwarding device is operated;
wherein the method further comprises:
matching the data to be transmitted with at least one forwarding path in the forwarding hardware;
and under the unmatched result, the data to be transmitted are sent to the first virtual forwarding equipment through the forwarding hardware for data forwarding.
36. The method of claim 35, wherein the sending, by the forwarding hardware, the data to be transmitted to the first virtual forwarding device for data forwarding comprises:
receiving the data to be transmitted through the first virtual forwarding device, and matching the data to be transmitted with at least one forwarding path in the first virtual forwarding device;
determining a matched forwarding path under the successful matching result;
and sending the data to be transmitted according to the forwarding path through the first virtual forwarding device.
37. The method according to claim 36, wherein, in a case where the external device sends data to the at least one virtual device, the sending the data to be transmitted according to the forwarding path includes:
determining, by the first virtual forwarding device, a virtual transmission device according to a virtual transmission identifier in the forwarding path, the virtual transmission device being created based on the transmission device;
and determining the corresponding virtual equipment according to the virtual transmission equipment through the first virtual forwarding equipment, and sending the data to be transmitted to the corresponding virtual equipment.
38. The method of claim 36, further comprising:
and under the unsuccessful matching result, the data to be transmitted is sent to second virtual forwarding equipment running on the processing unit through the first virtual forwarding equipment for data forwarding.
39. The method of claim 38, further comprising:
matching the data to be transmitted with at least one forwarding path in the second virtual forwarding device, and determining the matched forwarding path;
generating at least one forwarding path to be updated according to at least one forwarding path determined for at least one data to be transmitted;
and sending the at least one forwarding path to be updated to the first virtual forwarding device and the forwarding hardware.
40. The method according to claim 39, wherein said sending said at least one forwarding path to be updated to said forwarding hardware comprises:
sending the forwarding path to be updated to conversion equipment through the second virtual forwarding equipment;
and converting the forwarding path to be updated into a forwarding path recognizable by the forwarding hardware according to the type of the forwarding hardware through the conversion equipment, and sending the forwarding path to the forwarding hardware.
41. The method of claim 33, further comprising:
acquiring the current network connection state from the data to be transmitted through the forwarding hardware;
and sending the data to be transmitted which cannot be processed by the forwarding hardware to the first virtual forwarding equipment according to the network connection state, and sending the data.
42. The method of claim 41, further comprising:
after the data to be transmitted is sent by the first virtual forwarding device, deleting a corresponding forwarding path existing in the forwarding hardware by the first virtual forwarding device according to the network connection state, wherein the corresponding forwarding path belongs to the forwarding path of the data to be transmitted.
43. The method of claim 42, further comprising:
if the first virtual forwarding equipment does not have the forwarding path of the data to be transmitted, the data to be transmitted is sent to second virtual forwarding equipment;
after the data to be transmitted is sent by the second virtual forwarding device, deleting a corresponding forwarding path existing in the forwarding hardware by the second virtual forwarding device according to the network connection state, wherein the corresponding forwarding path belongs to the forwarding path of the data to be transmitted.
44. The method according to claim 39, wherein said sending said at least one forwarding path to be updated to said forwarding hardware comprises:
sending the at least one forwarding path to be updated to a queue through at least one processing unit;
and sending the at least one forwarding path to be updated in the queue to forwarding hardware through one processing unit.
45. The method according to claim 33, wherein, in a case where the external device sends data to the at least one virtual device, the sending out, by the forwarding hardware, the data to be transmitted according to the forwarding path includes:
determining, by the forwarding hardware, a corresponding virtual device according to the forwarding path;
and sending the data to be transmitted to the virtual equipment through the forwarding hardware.
46. The method of claim 45, wherein determining, by the forwarding hardware, the corresponding virtual device according to the forwarding path comprises:
determining, by the forwarding hardware, a virtual transmission device according to a virtual transmission identifier in the forwarding path, the virtual transmission device being created based on the transmission device;
and determining the corresponding virtual equipment according to the virtual transmission equipment through the forwarding hardware.
47. The method of claim 33, wherein the forwarding hardware is processing-capable hardware.
48. A data transmission method is characterized in that the method is suitable for forwarding hardware; the method comprises the following steps:
receiving data to be transmitted between at least one virtual device and external devices in the computing device;
determining a forwarding path of the data to be transmitted;
and sending out the data to be transmitted according to the forwarding path.
49. The method of claim 48, wherein sending out the data to be transmitted according to the forwarding path when the external device sends data to the at least one virtual device comprises:
determining corresponding virtual equipment according to the forwarding path;
and sending the data to be transmitted to the virtual equipment.
50. The method of claim 49, wherein said determining the corresponding virtual device according to the forwarding path comprises:
determining virtual transmission equipment according to the virtual transmission identifier in the forwarding path, wherein the virtual transmission equipment is established based on the transmission hardware;
and determining the corresponding virtual equipment according to the virtual transmission equipment through the forwarding hardware.
51. The method of claim 48, wherein the forwarding hardware is disposed in a transmitting device disposed in the computing device; the transmission device further includes: an individual processing unit on which a first virtual forwarding device is operated;
wherein the method further comprises:
matching the data to be transmitted with at least one forwarding path in the forwarding hardware;
and under the unmatched result, sending the data to be transmitted to the first virtual forwarding equipment for data forwarding.
52. The method of claim 51, wherein the sending the data to be transmitted to the first virtual forwarding device for data forwarding comprises:
receiving the data to be transmitted through the first virtual forwarding device, and matching the data to be transmitted with at least one forwarding path in the first virtual forwarding device;
determining a matched forwarding path under the successful matching result;
and sending the data to be transmitted according to the forwarding path through the first virtual forwarding device.
53. The method of claim 52, wherein, when the external device sends data to the at least one virtual device, the sending the data to be transmitted according to the forwarding path includes:
determining, by the first virtual forwarding device, a virtual transmission device according to the virtual transmission identifier in the forwarding path;
and determining the corresponding virtual equipment according to the virtual transmission equipment through the first virtual forwarding equipment, and sending the data to be transmitted to the corresponding virtual equipment.
54. The method of claim 52, further comprising:
and under the unsuccessful matching result, the data to be transmitted is sent to second virtual forwarding equipment running on the processing unit through the first virtual forwarding equipment for data forwarding.
55. The method of claim 48, wherein the forwarding hardware is processing-capable hardware.
56. An intelligent network card is characterized in that the intelligent network card is arranged on a computing device, and the computing device comprises at least one virtual device; the intelligent network card includes: forwarding hardware;
the intelligent network card receives data to be transmitted between at least one virtual device in the computing device and the external device through the forwarding hardware;
determining a forwarding path of the data to be transmitted through the forwarding hardware;
and sending the data to be transmitted out through the forwarding hardware according to the forwarding path.
57. The intelligent network card of claim 56, further comprising: an individual processing unit on which a first virtual forwarding device is operated;
the forwarding hardware matches the data to be transmitted with at least one forwarding path in the forwarding hardware;
and under the unmatched result, sending the data to be transmitted to the first virtual forwarding equipment for data forwarding.
58. The intelligent network card of claim 57, wherein the first virtual forwarding device receives the data to be transmitted and matches the data to be transmitted with at least one forwarding path in the first virtual forwarding device;
determining a matched forwarding path under the successful matching result;
and sending the data to be transmitted according to the forwarding path.
59. The intelligent network card of claim 58, wherein, in case that the external device sends data to the at least one virtual device, the first virtual forwarding device determines a virtual transmission device according to a virtual transmission identifier in the forwarding path, the virtual transmission device being created based on the intelligent network card;
and determining the corresponding virtual equipment according to the virtual transmission equipment, and sending the data to be transmitted to the corresponding virtual equipment.
60. The intelligent network card of claim 58,
and under the unsuccessful matching result, the first virtual forwarding equipment sends the data to be transmitted to second virtual forwarding equipment running on the processing unit for data forwarding.
61. The intelligent network card of any one of claims 56-60, wherein the forwarding hardware comprises: FPGA hardware, ASIC hardware, and TOFINO hardware.
62. The intelligent network card of claim 56, wherein the forwarding hardware is processing-capable hardware; the virtual device is a device that creates an independent operating environment depending on the computing device.
63. A computing device comprising the intelligent network card of claims 56-62.
64. A computing device comprising a transmitting device and at least one virtual device, the transmitting device comprising forwarding hardware; the computing device further comprises: a memory and a processor;
the memory for storing a computer program;
a processor for executing a computer program for: receiving, by the forwarding hardware, data to be transmitted that is transmitted between the at least one virtual device and an external device;
determining a forwarding path of the data to be transmitted through the forwarding hardware;
and sending the data to be transmitted out through the forwarding hardware according to the forwarding path.
65. An electronic device, comprising a memory cell and a logic cell;
the storage unit is used for storing an electronic device program;
the logic unit is configured to execute a logic function of an electronic device program to: receiving data to be transmitted between at least one virtual device and external devices in the computing device;
determining a forwarding path of the data to be transmitted;
and sending out the data to be transmitted according to the forwarding path.
66. A computer readable storage medium having a computer program stored thereon, which, when executed by one or more processors, causes the one or more processors to perform the steps of the method of any one of claims 1-55.
CN202010426297.3A 2020-05-19 2020-05-19 Data transmission method, intelligent network card, computing device and storage medium Active CN113691466B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010426297.3A CN113691466B (en) 2020-05-19 2020-05-19 Data transmission method, intelligent network card, computing device and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010426297.3A CN113691466B (en) 2020-05-19 2020-05-19 Data transmission method, intelligent network card, computing device and storage medium

Publications (2)

Publication Number Publication Date
CN113691466A true CN113691466A (en) 2021-11-23
CN113691466B CN113691466B (en) 2023-08-18

Family

ID=78575918

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010426297.3A Active CN113691466B (en) 2020-05-19 2020-05-19 Data transmission method, intelligent network card, computing device and storage medium

Country Status (1)

Country Link
CN (1) CN113691466B (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114666363A (en) * 2022-02-25 2022-06-24 阿波罗智联(北京)科技有限公司 Information transmission method and device, electronic equipment, storage medium and product
CN114679349A (en) * 2022-03-29 2022-06-28 新华三技术有限公司 Data communication method and device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102752147A (en) * 2012-07-17 2012-10-24 华为技术有限公司 Method and device for creating network equipment
US20130138764A1 (en) * 2011-11-30 2013-05-30 Soumendu S. Satapathy Method and system for virtual machine data migration
CN110417683A (en) * 2019-07-24 2019-11-05 新华三大数据技术有限公司 Message processing method, device and server
CN110990116A (en) * 2019-11-21 2020-04-10 优刻得科技股份有限公司 Method, device and system for transmitting data between intelligent network card and virtual machine

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130138764A1 (en) * 2011-11-30 2013-05-30 Soumendu S. Satapathy Method and system for virtual machine data migration
CN102752147A (en) * 2012-07-17 2012-10-24 华为技术有限公司 Method and device for creating network equipment
CN110417683A (en) * 2019-07-24 2019-11-05 新华三大数据技术有限公司 Message processing method, device and server
CN110990116A (en) * 2019-11-21 2020-04-10 优刻得科技股份有限公司 Method, device and system for transmitting data between intelligent network card and virtual machine

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114666363A (en) * 2022-02-25 2022-06-24 阿波罗智联(北京)科技有限公司 Information transmission method and device, electronic equipment, storage medium and product
CN114666363B (en) * 2022-02-25 2024-03-01 阿波罗智联(北京)科技有限公司 Information transmission method, device, electronic equipment, storage medium and product
CN114679349A (en) * 2022-03-29 2022-06-28 新华三技术有限公司 Data communication method and device
CN114679349B (en) * 2022-03-29 2023-07-21 新华三技术有限公司 Data communication method and device

Also Published As

Publication number Publication date
CN113691466B (en) 2023-08-18

Similar Documents

Publication Publication Date Title
CN112422615B (en) Communication method and device
US10621138B2 (en) Network communications using pooled memory in rack-scale architecture
EP3057272B1 (en) Technologies for concurrency of cuckoo hashing flow lookup
CN105511954A (en) Method and device for message processing
US9864717B2 (en) Input/output processing
US20200364080A1 (en) Interrupt processing method and apparatus and server
US20230045601A1 (en) Far-end data migration device and method based on fpga cloud platform
US10609125B2 (en) Method and system for transmitting communication data
CN110532208B (en) Data processing method, interface conversion structure and data processing equipment
CN113746749A (en) Network connection device
CN113691466B (en) Data transmission method, intelligent network card, computing device and storage medium
CN113472624A (en) Method for realizing virtual network data packet forwarding based on vDPA and application
CN115639947A (en) Data writing method, data reading method, device, equipment, system and medium
US20140025859A1 (en) Input/output processing
CN111290979B (en) Data transmission method, device and system
US20230153153A1 (en) Task processing method and apparatus
WO2023061180A1 (en) Multi frequency-based data sending method and apparatus, multi frequency-based data receiving method and apparatus, and device
CN113485951B (en) DMA read operation implementation method based on FPGA, FPGA equipment and communication system
WO2018106392A1 (en) Technologies for multi-core wireless network data transmission
CN113691465B (en) Data transmission method, intelligent network card, computing device and storage medium
CN114595080A (en) Data processing method and device, electronic equipment and computer readable storage medium
CN116601616A (en) Data processing device, method and related equipment
CN117041147B (en) Intelligent network card equipment, host equipment, method and system
WO2023093065A1 (en) Data transmission method, computing device, and computing system
US20240069754A1 (en) Computing system and associated method

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40062883

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant