Improved virtual switch for network function virtualization
By configuring a virtual switch with enhanced intelligence to optimize communication paths based on flow parameters, the system addresses the limitations of conventional virtual switches, achieving improved throughput and reliability in virtual communication networks.
Patent Information
- Application Number
- DE112016005672
- Authority / Receiving Office
- DE · DE
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2015-12-09
- Filing Date
- 2016-11-08
- Publication Date
- 2025-04-30
- Estimated Expiration
- 2036-11-08
AI Technical Summary
Conventional virtual switches in virtual communication network infrastructures face limitations such as high resource consumption, lack of flexibility and scalability, and susceptibility to deterministic performance, making them unsuitable for certain network environments.
A virtual switch-based communication system is configured with enhanced intelligence to select or establish optimal communication paths based on communication flow parameters, reducing or disabling functions like packet transmission, software hashing, and table look-up to improve throughput and reduce complexity.
The enhanced virtual switch system achieves higher throughput data flow, reduces compute cycles, cache-thrashing, and data copying, resulting in improved latency and reliability within the virtual communication network.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
Technical area
[0001] The embodiments described herein relate to virtual communication network infrastructures. Some embodiments relate to virtual switches in software. background
[0002] A virtual switch (or vSwitch) is a software application used in many virtual communication environments. A virtual switch enables communication between virtual machines or between virtual machines and physical components in a system or network. Many conventional virtual switches exist. However, some of these conventional virtual switches can have limitations such as high resource consumption, lack of flexibility and scalability, and susceptibility to indeterministic performance. These limitations can make some conventional virtual switches unsuitable for certain virtual communication network infrastructures.
[0003] US 2013 / 0174157 A1, US 2014 / 0215463 A2, US 2015 / 0131669 A1 and WO 2014 / 004060 A1 describe networks of virtual machines with a virtual switch. Brief description of the drawings Fig. Figure 1 shows a block diagram of a device in the form of a system with communication paths based on virtual switches according to some embodiments described herein. Fig. 2 is a diagram that illustrates communication flow and the generation of communication paths in the system of Fig. 1 represents a connected algorithm according to some embodiments described here. Fig. 3 represents a block diagram of the system of Fig. Figure 1 shows an example of reduced communication paths according to some embodiments described here. Detailed description
[0004] The invention is defined by the independent claims and provides a solution to the problem described herein. The techniques described herein relate to a communication system based on virtual switches. The system comprises a virtual switch, which can be an implementation of Layer 2 or Layer 3 (or a combination of both) of the Open Systems Interconnection (OSI) model. In addition to the virtual switch, other units in the system infrastructure include platform hardware, a host, and virtual machines. Many communication paths between these units in the system pass through the virtual switch. In the techniques described herein, the virtual switch and at least some of the other units in the system are configured using enhanced intelligence.Such a configuration allows the virtual switch and other units in the system to select or create optimal communication paths between the units. These communication paths can be selected or created based on communication flow parameters (e.g., traffic flow), such as priority, latency, service level agreement (SLA), or computational overhead (or both) associated with virtual machines used in the system, or other communication flow parameters. The optimal communication paths can reduce or disable some functions involved in the normal operation of the virtual switch. Such functions can include receiving and transmitting information (e.g., packets), software hashing, and table lookups. Reducing or disabling such functions can improve computation cycles, cache thrashing, data copying, and software complexity.B. reduce). In this way, a higher throughput of data flow can be achieved.
[0005] Fig. Figure 1 shows a block diagram of a device in the form of a system 100 with communication paths based on virtual switches according to some embodiments described herein. System 100 comprises platform hardware 110, a host 120, a virtual switch 130, and virtual machines 141 and 142. Fig. Figure 1 shows two virtual machines, 141 and 142, as an example. The number of virtual machines can vary. The platform hardware 110 can communicate with a unit 109. The unit 109 can comprise an external unit (e.g., a network or components of a network).
[0006] Platform Hardware 110 can include or be contained in mobile devices (e.g., mobile phones or tablets), personal computers (e.g., desktop computers and laptops), set-top boxes, televisions, server computers, mainframes, and other electronic devices or systems. As described in Fig. As shown in Figure 1, the platform hardware 110 can include at least one processor (e.g., a CPU, Central Processing Unit) 111, one chipset 112, one network controller 113, one functional unit 114, and one memory 115.
[0007] The processor 111 can comprise a general-purpose processor or an application-specific integrated circuit (ASIC). The processor 111 can comprise a circuit 111a and a memory 111b. The chipset 112 can comprise a circuit 112a and a memory 112b. The chipset 112 can include additional components (e.g., a processing unit) for performing operations such as input / output (I / O) and other processing operations. The network controller 113 can comprise a circuit 113a and a memory 113b, as well as additional components (e.g., a processing unit) for performing operations such as enabling platform hardware 110 to communicate with a network (e.g., the Internet, an Ethernet-based network, a wireless network, or other networks). The network controller 113 can be a network adapter (e.g., a network card (NIC, Network Interface Card)).Functional unit 114 can include components (e.g., an accelerator) capable of performing functions such as encryption, decryption, compression, linear modulation and demodulation (e.g., fast Fourier transform (FFT), inverse FFT, etc.), or other functions. In this description, a circuit (e.g., circuit 111a, 112a, or 113a) can include circuit components capable of transmitting information (e.g., data) (e.g., receiving and sending). A circuit in this description can also include, or be, a general-purpose processor that executes code read from memory.
[0008] Memory 115 can comprise non-volatile memory, volatile memory, or a combination of both. Memory 115 can include any type of memory, such as semiconductor-based storage media, non-semiconductor-based storage media, magnetic (e.g., disk) storage media, optical storage media, or other types of non-transient, computer-readable storage media. The non-transient, computer-readable storage media can contain instructions that cause at least one component of System 100 (e.g., one or more than one of Processor 111, Chipset 112, and Network Controller 113) to perform procedures described herein (e.g., System 100-related operations).
[0009] Additionally or alternatively, memory 111b, 112b and 113b can also function as non-transient computer-readable storage media and can store instructions that can cause at least one component of System 100 (e.g., one or more than one of Processor 111, Chipset 112 and Network Controller 113) to perform procedures described herein (e.g., operations related to System 100).
[0010] Furthermore, System 100, although not in Fig. Figure 1 shows additional non-transient computer-readable storage media (e.g., memory) that contain instructions which (instead of or in addition to at least one of memory locations 111b, 112b, 113b and 115) can cause at least one component of System 100 (e.g., one or more than one of processor 111, chipset 112 and network controller 113) to perform procedures described herein (e.g., operations related to System 100).
[0011] Host 120 can facilitate communication between virtual and physical components in System 100. Host 120 can host virtual machines 141 and 142. Host 120 can contain one or more operating systems (OS). Part of Host 120 or all of Host 120 can be contained within platform hardware 110. For example, an OS associated with Host 120 can be contained within memory 115.
[0012] Each of virtual machines 141 and 142 can be implemented by software, hardware, or a combination of both. Each of virtual machines 141 and 142 can run its own software programs. Such software programs can include an operating system (e.g., a guest operating system), applications, or other types of software. Virtual machines 141 and 142 can be implemented on host 120. Alternatively, virtual machines 141, 142, or both can be implemented outside of host 120. Part of each of virtual machines 141 and 142, or the entirety of either virtual machine 141 or 142, can be contained within platform hardware 110 (e.g., in memory 115).
[0013] The virtual switch 130 can be implemented in software. Part of the virtual switch 130, or the entire virtual switch 130, can be contained in at least one component of platform hardware 110, such as at least one processor 111, memory 115, network controller 113, and chipset 112. For example, the virtual switch 130 can be implemented in memory 115.
[0014] System 100 includes communication paths (e.g., communication channels) 151, 152, 161, 162, and 171, which can be normal communication paths, to enable communication (e.g., transferring information) between platform hardware 110, host 120, virtual switch 130, and virtual machines 141 and 142.
[0015] Communication path 151 enables communication between virtual machine 141 and unit 109. Communication path 152 enables communication between virtual machine 142 and unit 109. Communication path 161 enables communication between virtual machine 141 and host 120. Communication path 162 enables communication between virtual machine 142 and host 120. Communication path 171 enables communication between virtual machines 141 and 142 via virtual switch 130.
[0016] System 100 can also include handover communication paths (e.g., handover communication channels) 101, 102, 103, 104, and 105 that can be created by the units of System 100 (e.g., by one or more than one of platform hardware 110, host 120, virtual switch 130, and virtual machines 141 and 142).
[0017] Handover communication paths 101, 102, 103, 104, and 105 can be created at any given time based on communication flow parameters between the units of System 100 at that time. These communication flow parameters can include priority (e.g., high priority or low priority), SLA or computational overhead (or both) related to virtual machines used in System 100, latency (e.g., low latency, such as high-speed data, or high latency, such as low-speed data), or other communication flow parameters. If a particular handover communication path (e.g., one of 101, 102, 103, 104, or 105) is created and a change occurs in the communication flow parameters used to create that particular handover communication path, then that handover communication path can be disabled (e.g., terminated or disconnected).Alternatively, this handover communication path can remain in System 100 (e.g., it is not deactivated), even if such a change occurs.
[0018] In System 100, handover communication paths 101, 102, 103, 104 and 105 can be permanent or temporary, based on the configuration information of enhanced intelligence set up in the units of System 100 (e.g., set up in platform hardware 110, host 120, virtual switch 130 and virtual machines 141 and 142).
[0019] Virtual switch 130 can configure information to create at least one of handover communication paths 101, 102, 103, 104, and 105 (e.g., during an initialization phase). The configuration information can be based on (or include) communication flow parameters (e.g., priority and latency) described above. One or more components in platform hardware 110 can be configured to store the configuration information configured by virtual switch 130. For example, at least one of the stores 111b, 112b, and 113b can be configured to store at least a portion of the configuration information configured by virtual switch 130. Alternatively, one of the stores 111b, 112b, and 113b can be configured to store all of the configuration information configured by virtual switch 130.
[0020] Handover communication path 101 allows virtual machine 141 and platform 110 to bypass virtual switch 130 and communicate with each other directly via handover communication path 101 (e.g., communicate directly) without going through virtual switch 130. Handover communication path 101 can be configured to transmit information at a higher rate than communication path 151.
[0021] Handover communication path 102 allows virtual machine 141 and host 120 to bypass virtual switch 130 and communicate with each other directly via handover communication path 102 (e.g., communicate directly) without going through virtual switch 130. Handover communication path 102 can be configured to transmit information at a higher rate than communication path 161.
[0022] Handover communication path 103 allows virtual machine 142 and platform 110 to bypass virtual switch 130 and communicate with each other via handover communication path 103 (e.g., communicate directly). Handover communication path 103 can be configured to transmit information at a higher rate (e.g., higher speed) than communication path 152.
[0023] Handover communication path 104 allows virtual machine 142 and host 120 to bypass virtual switch 130 and communicate with each other directly via handover communication path 104 (e.g., communicate directly) without going through virtual switch 130. Handover communication path 104 can be configured to transmit information at a higher rate than communication path 162.
[0024] Handover communication path 105 allows virtual machines 141 and 142 to bypass virtual switch 130 and communicate with each other directly via handover communication path 105 (e.g., communicate directly) without going through virtual switch 130. Handover communication path 105 can be configured to transmit information at a higher rate than communication path 171.
[0025] Virtual Switch 130 can be configured with enhanced intelligence to detect active traffic flowing through System 100 and take appropriate measures to improve System 100's operation. For example, the configuration (e.g., enhanced intelligence) can allow Virtual Switch 130 to transfer traffic passing through it to alternative communication paths that may have comparatively lower overhead, higher speed, or both. Such alternative communication paths may include communication paths 101, 102, 103, 104, and 105.
[0026] Some traditional virtual switch-based communication systems may not be configured to include or establish communication paths similar to communication paths 101, 102, 103, 104, and 105. For example, some traditional virtual switch-based communication systems may be configured to connect a number of network elements (such as software stacks in a virtual machine) to COTS (Commercial Off The Shelf) hardware. Such a configuration can create a complex and demanding environment on NFV (Network Functions Virtualization) platforms and may prevent them from providing low-latency, low-overhead communication between virtual machines in the system.A traditional virtual switch (which is a purely software-based Layer 2 / Layer 3 solution) in such a system can become a bottleneck in some situations and may consume more platform resources to transfer data to and from the virtual machines. Although some virtual switch operations (e.g., classification / hashing) can be offloaded to hardware in the traditional system, such operations can be hardware-dependent and may be unsuitable for many data types (e.g., encrypted data where information fields (e.g., data or packet) are not plain text).
[0027] The following refers to System 100 of Fig. The techniques described in Section 1 address the aforementioned limitations and challenges of some conventional communication systems based on virtual switches. In System 100, the virtual switch 130 is configured to detect the source and destination (e.g., the target) of the various flows within System 100. This enables the implementation of various optimizations within System 100 to improve its operations. The improvement allows the virtual switch 130 and the virtual machines 141 and 142 to collaborate based on the initialization of an application programming interface (API) and to establish communication paths (e.g., handover communication paths 101, 102, 103, 104, and 105) based on communication flows and their source and destination.
[0028] Fig. Figure 2 is a diagram illustrating an algorithm 200 associated with communication flow and the generation of communication paths in System 100, according to some embodiments described herein. Algorithm 200 demonstrates improvements to System 100 that can lead to enhanced communication paths created during initialization based on algorithm 200. This can reduce the involvement of virtual switch 130 in critical communication paths (e.g., handover communication paths 101, 102, 103, 104, and 105) in System 100, resulting in lower latency and improved reliability in System 100.
[0029] Without the improvements described here in Algorithm 200, the communication flow between components in a conventional communication system based on virtual switches can be more complex. This can result in a virtual switch becoming a bottleneck in the conventional system.
[0030] As in Fig. As shown in Figure 2, Algorithm 200 includes an initialization phase 210 for setting up communication paths (e.g., handover communication paths 101, 102, 103, 104, and 105) for subsequent communication between units of System 100 after initialization. Algorithm 200 can be implemented by software, hardware, firmware, or any combination thereof.
[0031] In some configurations of System 100, at least a portion of Algorithm 200 (e.g., part of Algorithm 200 or the entirety of Algorithm 200) may be contained in platform hardware 110, such as the processor 111, chipset 112, network controller 113, functional unit 114 (e.g., accelerator), memory 115, or any combination of these components 110.
[0032] As in Fig. As shown in Figure 2, the virtual switch 130 and the virtual machines 141 and 142 can perform operations 211 to 216 during the initialization phase 210. The initialization phase 210 can be performed for any given communication flow in system 100. Communication flow parameters associated with one communication flow (e.g., priority and latency) can differ from those of another communication flow.
[0033] In Operation 211, virtual switch 130 can receive initial information (e.g., packets, frames, or other information) of a given communication flow. This initial information can be received on a control path from virtual switch 130 ( Fig. 1) In Operation 212, virtual switch 130 can configure and create a flow table entry based on information in the initial information. In Operation 213, virtual switch 130 can update a flow cache table based on information in the initial information. Virtual switch 130 can send information to virtual machine 141 via a normal communication path (e.g., communication path 151 or 161 in Fig. 1) transferred based on the flow table entry in operation 212.
[0034] In Operation 214, virtual switch 130 can send a request to virtual machine 141. The request can include priority information or latency information (or both) associated with a specific communication flow. For example, virtual switch 130 can request a response from virtual machine 141 indicating whether a priority associated with a specific communication flow is a high- or low-priority flow, and whether a latency associated with a specific communication flow is a high- or low-latency flow.
[0035] The information in the request in Operation 214 can also include the capabilities of virtual machine 141. For example, virtual switch 130 can request a response from virtual machine 141 indicating whether a direct connection (e.g., a handover communication path) can be established from source to destination for a given communication flow.
[0036] In Operation 215, virtual machine 141 can send a response to virtual switch 130 in response to a request from virtual switch 130. The response can include information indicating the priority and latency associated with a particular communication. The response can also include information indicating whether a direct connection from source to destination can be established.
[0037] Handover communication paths (e.g., 102, 104, and 105) may or may not be created, depending on the information in the response. For example, handover communication paths (e.g., 102, 104, or both) between host 120 and one or both of virtual machines 141 and 142 may be created if the information in the response indicates that a direct connection (e.g., a direct communication path) from source to destination can be established. The handover communication path (e.g., 105) between virtual machines 141 and 142 may be created if the information in the response indicates that a direct connection from source to destination can be established. One or more handover communication paths (e.g., 102, 104, or both) may not be created if the information in the response indicates that a direct connection from source to destination cannot be established.
[0038] In Operation 216, virtual switch 130 can reconfigure and update the flow table entry based on the response from virtual machine 141. For example, virtual switch 130 can send information to virtual machine 141 via a direct communication path (e.g., handover communication path 101 or 102 in...). Fig. 1) transferred based on reconfiguration and updating of the flow table entry based on the response from virtual machine 141.
[0039] Configuration information set up by virtual switch 130 can be stored in at least one of the storage locations 111b, 112b, and 113b. Alternatively, all configuration information set up by virtual switch 130 can be stored in one of the storage locations 111b, 112b, and 113b.
[0040] The above description describes request and response operations between virtual switch 130 and virtual machine 141 to establish communication paths connected to virtual machine 141. However, similar request and response operations can be performed between virtual switch 130 and virtual machine 142 to establish communication paths connected to virtual machine 142.
[0041] In some situations in Algorithm 200, the complexity can increase if the data originates from the external network (e.g., from Unit 109). In such situations, a paravirtualization I / O model can be used to establish point-to-point communication between I / O devices and virtual machines 141 and 142.
[0042] After creating one or more handover communication paths as described above, information can be transferred directly from source to destination along the handover communication path. For example, as described in Fig. As shown in Figure 2, information 221 flows directly from unit 109 to virtual machine 141 (e.g., via handover communication path 101). Fig. 1 flow), without entering virtual switch 130 (e.g., bypassing virtual switch 130). In another example, information 222 (e.g., from virtual machine 141) can flow directly from virtual machine 141 to virtual machine 142 (e.g., via handover communication path 105 from Fig. 1 flow), without entering virtual switch 130 (e.g. bypassing virtual switch 130).
[0043] Thus, in the preceding example, virtual switch 130 can skip (do not execute) some of the functions associated with transmitting information 221 that it can normally perform (execute if the direct communication path were not created). For example, virtual switch 130 can skip hash calculation and lookup of the destination associated with information 221. Likewise, virtual switch 130 can skip (do not execute) some of the functions associated with transmitting information 222 that it can normally perform (execute if the direct communication path were not created). For example, virtual switch 130 can skip hash calculation and lookup of the destination associated with information 222.
[0044] As in Fig. As shown in Figure 2, in Operation 217, the virtual switch 130 connected to the handover communication path can monitor the communication flow between Unit 109 and Virtual Machine 141 and take appropriate measures based on the monitoring (without interfering with the communication flow on the handover communication path between the Unit and Virtual Machine 141). Similarly, in Operation 218, the virtual switch 130 connected to the handover communication path can monitor the communication flow between Virtual Machines 141 and 142 and take appropriate measures based on the monitoring (without interfering with the communication flow on the handover communication path between Virtual Machines 141 and 142).
[0045] For example, virtual switch 130 can monitor the progress of the communication flow and the status (e.g., whether the status has changed or not) of the communication flow's priority in each of operations 217 and 218. Based on this monitoring, the handover communication paths in system 100 can either remain active or be disabled (e.g., terminated or disconnected).
[0046] For example, a specific handover communication path may remain in System 100 (e.g., it may not be deactivated) if the communication flow associated with that specific handover communication path has not expired. The specific handover communication path may be deactivated if the communication flow associated with that specific handover communication path has expired. In an alternative arrangement (e.g., configuration), a specific handover communication path may remain in System 100 even if the communication flow associated with that specific handover communication path has expired. In such an alternative arrangement, the specific handover communication path (which remains in System 100) is a pre-existing handover communication path from the perspective of future communication flow operations in System 100.
[0047] In another example, a specific handover communication path may remain in System 100 (e.g., it may not be disabled) if the priority of the communication flow associated with that specific handover communication path remains unchanged (e.g., it retains a high (e.g., critical) priority). The specific handover communication path may be disabled if the priority of the communication flow associated with that specific handover communication path changes (e.g., from a high (e.g., critical) priority to a low (e.g., non-critical) priority). In an alternative arrangement (e.g., configuration), a specific handover communication path may remain in System 100 even if the priority of the communication flow associated with that specific handover communication path changes.In such an alternative arrangement, the specified handover communication path (which remains in system 100) is a pre-existing handover communication path from the perspective of future communication flow operations in system 100.
[0048] As in Fig. As shown in Figure 1, although handover communication paths can be created, other communication paths (e.g., non-critical communication paths), such as communication paths 151, 152, 161, 162 and 171, can still run through virtual switch 130.
[0049] Fig. Figure 3 presents a block diagram of System 100. Fig. Figure 1 presents an example of reduced communication paths according to some embodiments described here. Fig. Figure 3 shows an example where information (e.g., packets) 330 can be sent to platform hardware 110 (e.g., to one of circuits 111a, 113a, and 112a) from unit 109 (e.g., from a network). Fig. Figure 3 shows two different flow paths of different lengths along which information can be transmitted. One flow path (e.g., primary flow path) includes paths (solid lines) 325a, 325b, 325c, 325d, and 325e. Another flow path (e.g., alternative flow path) includes paths (all of which are shown in Figure 330). Fig. 3 paths shown except path 325d) 325a, 325a', 325b', 325b, 325c, 325d', 325d'' and 325e. Thus, as in Fig. Figure 3 shows the alternative river path being longer than the primary river path.
[0050] The two different flow paths of information 330 are related to a situation in which an operation (e.g., an offloading operation) is performed on information 330 (e.g., by functional unit 114) after it has been received by platform hardware 110. Examples of such an operation (which can be performed by functional unit 114) include encryption, decryption, compression, L1 modulation and demodulation (e.g., fast Fourier transform (FFT), inverse FFT, etc.), or other operations. Depending on whether the improved techniques described here are used, information 330 can be transferred to one of the two flow paths described in Fig. The information is transferred via the three depicted flow paths. As described below, the flow path (e.g., primary path) of Information 330 is shorter (compared to the alternative path) when improved techniques are used. The flow path (e.g., alternative path) of Information 330 is longer (compared to the primary path) when improved techniques are not used.
[0051] The following description provides an example where the techniques described here are not used. Fig. After information 330 is received (e.g., from circuits 111a, 113a, 112a, or other physical components of platform hardware 110), information 330 is sent to virtual machine 141 (via paths 325a and 325a'). Virtual machine 141 then sends information 330 to functional unit 114 (via paths 325b and 325b'). Functional unit 114 performs an operation (e.g., a swap operation) on information 330. After the operation is complete, functional unit 114 sends the information (e.g., resulting information based on information 330, such as encrypted, decrypted, or compressed information) back to virtual machine 141 (via path 325c). Virtual machine 141 sends the information to virtual switch 130 (via path 325d'). Virtual switch 130 sends information 330 to virtual machine 142 (via path 325d'').Virtual machine 142 sends the information to unit 109 (via path 325e). Without using the techniques described here, the information flow paths in this example can be complicated and may suffer undesirable overhead due to data copying, cache flushing, etc.
[0052] The following description provides an example where the techniques described here are used. In the described techniques, virtual machine 130 can be configured to optimize (e.g., reduce) part of the information flow path 330. For example, as in Fig. Figure 3 shows that when information 330 is received at platform hardware 110, it is sent to virtual switch 130 and then directly from virtual switch 130 to functional unit 114 (via paths 325a and 325b), instead of going to virtual machine 141 (via path 325a') and then being forwarded again (via path 325c). Thus, information 330 can be sent from virtual switch 130 to functional unit 114 for a swap operation on information 330 (e.g., to generate resulting information such as encrypted, decrypted, or compressed information) without sending information 330 to virtual machine 141 before the operation on information 330 is performed.
[0053] Once the operation is complete, functional unit 114 sends the information to virtual machine 141 (via path 325c). Virtual machine 141 can process the information and send it directly to virtual switch 142 (via path 325d). Path 325c can include handover communication path 105 (described above). Thus, as in the example of Fig. Figure 3 shows that in some situations (e.g., when an outsourcing operation is performed) the flow path of information in System 100 can be improved (e.g., reduced).
[0054] In this way, the techniques described above with reference to Fig. 1 to Fig.Section 3 describes how to improve the operations of a virtual switch-based communication system, such as System 100. The improvements include low latency, high throughput, and reliable communication infrastructure on the NFV platform, as well as reduced workload performance impact due to fewer data copying and cache thrashing side effects. Traffic flow is more controlled by the workloads (which receive and process the flows) than by the platform's intelligence. The virtual switch (e.g., virtual switch 130) does not become a bottleneck as the number of flows in the system increases. The intelligent API developed using the described techniques enables the virtual switch to efficiently utilize platform resources for mediation.
[0055] Virtual machine 141 can be configured to determine whether a particular information packet from unit 109 can be sent from virtual switch 130 to functional unit 114, instead of being sent from virtual switch 130 to virtual machine 141 and then from virtual machine 141 to functional unit 114. Virtual machine 141 and virtual switch 130 can be configured to communicate with each other to optimize the flow path of information (e.g., information 330) transferred within the system in certain situations (e.g., when an operation (e.g., a swap operation) is performed). For example, virtual machine 141 can send configuration information (e.g., any combination of configuration package and API) to virtual switch 130 with respect to a certain type of information (e.g.,Information about where a swap operation is to be performed on the information is sent (e.g., during initialization). Based on this configuration information, if virtual switch 130 receives such information (e.g., information 330) intended for virtual machine 141, it can send this information to functional unit 114 for an operation to be performed on the information without sending it to virtual machine 141 before such an operation is carried out.
[0056] The representations of the devices (e.g., System 100) and methods (e.g., operations of System 100 including Algorithm 200) described above are intended to provide a general understanding of the structure of various embodiments and are not intended to provide a complete description of all elements and features of a device that could utilize the structures described herein.
[0057] The devices described above may include or be contained in high-speed computers, communication and signal processing circuit arrangements, single- or multi-processor modules, single or multiple embedded processors, multi-core processors, message information switches, and application-specific modules, including multi-layer multi-chip modules. Such devices may also be included as components in a variety of other devices (e.g., electronic systems), such as televisions, mobile phones, personal computers (e.g., laptop computers, desktop computers, handheld computers, etc.), tablets (e.g., tablet computers), workstations, radios, video equipment, audio players (e.g., MP3 (Motion Picture Experts Group, Audio Layer 3) players), vehicles, medical devices (e.g., heart rate monitors, blood pressure monitors, etc.), set-top boxes, and others.
[0058] As used in this application and in the claims, an enumeration of elements combined with the expression "at least one of" can mean any combination of the enumerated elements. For example, the phrase "at least one of A, B and C" can mean: A; B; C; A and B; A and C; B and C; or A, B and C. Additional remarks and examples
[0059] Example 1 includes an object (such as a device, an electronic device (e.g., a circuit, an electronic system, or both) or a machine) that has a circuit for receiving information for transmission to at least one of a first virtual machine and a second virtual machine through a virtual switch, and a memory for storing configuration information set up by the virtual switch to enable the first virtual machine to bypass the virtual switch and communicate with at least one of the second virtual machine and a host.
[0060] In Example 2, the subject of Example 1 can optionally include the virtual switch being configured to transfer information from the first virtual machine to an external entity via the virtual switch, and being configured to allow the first virtual machine to bypass the virtual switch and communicate with the external entity.
[0061] In Example 3, the subject of Example 1 or 2 may optionally include the virtual switch being configured to transfer information from the first virtual machine to the second virtual machine via a first communication path through the virtual switch, and setting up the configuration information to allow the first virtual machine to bypass the virtual switch and communicate with the second virtual machine via a second communication path, the first and second communication paths being configured to transfer information at different rates.
[0062] In Example 4, the subject of Example 1 can optionally include the virtual switch being configured to transmit information from the first virtual machine to the host via a third communication path through the virtual switch, and setting up the configuration information to allow the first virtual machine to bypass the virtual switch and communicate with the host via a fourth communication path, the third and fourth communication paths being configured to transmit information at different rates.
[0063] In Example 5, the subject of Example 1 or 2 may optionally include the virtual switch being configured to receive initial information from the circuit and send the initial information to a functional unit for a swap operation to generate second information, without sending the initial information to the first virtual machine, and sending the second information to the first virtual machine after the swap operation is complete.
[0064] In Example 6, the subject of Example 1 may optionally include the outsourcing operation comprising at least one of encryption, decryption, and compression operations.
[0065] In Example 7, the subject of Example 1 or 2 may optionally include the virtual switch being configured to monitor the communication flow associated with a communication path directly coupled between the first and second virtual machines in order to determine whether the communication path should be disabled.
[0066] In Example 8, the subject of Example 1 or 2 may optionally include the virtual switch being configured to monitor the communication flow associated with a communication path directly coupled between the first virtual machine and an external entity, in order to determine whether the communication path should be disabled.
[0067] In Example 9, the subject matter of Example 1 may optionally include the device having a processor and the circuit being contained in the processor.
[0068] In Example 10, the subject of Example 1 can optionally include the fact that at least part of the memory is contained in the processor.
[0069] Example 11 includes an object (such as a device, an electronic device (e.g., a circuit, an electronic system, or both), or a machine) that has a network controller for receiving information for transmission to at least one of a first virtual machine and a second virtual machine via at least one first communication path through a virtual switch, and memory for storing configuration information set up by the virtual switch to enable the first virtual machine to bypass the virtual switch and communicate with at least one of the second virtual machine and a host via at least one second communication path.
[0070] In Example 12, the subject of Example 11 can optionally include the fact that at least part of the memory is contained in the network controller.
[0071] In Example 13, the subject of Example 11 may optionally include the virtual switch being configured to disable the second communication path when a parameter associated with a flow of communication on the second communication path has expired.
[0072] In Example 14, the subject of Example 11 may optionally include the virtual switch being configured to disable the second communication path when a parameter associated with a flow of communication on the second communication path is changed.
[0073] In Example 15, the subject of Example 11 can optionally include the virtual switch being trained to send a request to the first virtual machine, the request containing information about whether to establish a direct communication path from a source to a destination.
[0074] In Example 16, the subject of Example 11 can optionally include the virtual switch being trained to update a flow table entry based on a response to the query sent to the virtual switch from the first virtual machine.
[0075] In Example 17, the subject of Example 11 may optionally include the virtual switch being configured to skip hash calculation and table lookup in connection with information transferred from the first virtual machine to the second virtual machine.
[0076] Example 18 includes an object (such as a method for operating a device, an electronic apparatus (e.g., circuit, electronic system or both) or a machine) comprising configuring a virtual switch for transferring information from a circuit to at least one of a first virtual machine and a second virtual machine through the virtual switch, and configuring the virtual switch for transferring information directly from the first virtual machine to at least one of the second virtual machine and a host, bypassing the virtual switch, wherein the configuration of the virtual switch is performed by at least one of a processor, a chipset and a network controller of platform hardware.
[0077] In Example 19, the subject of Example 18 may optionally further include demonstrating the configuration of the virtual switch for the transfer of information between a network and at least one of the first and second virtual machines, without transferring the information via the virtual switch.
[0078] In Example 20, the subject of Example 18 may optionally further include the sending of first information from a circuit to the virtual switch, the sending of first information from the virtual switch to a functional unit for a swap operation to generate second information without sending the first information to the first virtual machine before the swap operation is performed, and the sending of second information from the functional unit to the first virtual machine via the virtual switch.
[0079] In Example 21, the subject of one of Examples 18-20 may optionally include that at least one of the first and second virtual machines is implemented on the host.
[0080] In Example 22, the subject of one of Examples 18-20 may optionally include the virtual switch being implemented on the host.
[0081] In Example 23, the subject of one of Examples 18-20 may optionally include that at least part of the host is contained in the memory.
[0082] Example 24 includes an item comprising a non-transient, computer-readable storage medium containing instructions that cause a processing unit to configure a virtual switch for transferring information to at least one of a first virtual machine and a second virtual machine via the virtual switch, and to configure the virtual switch for transferring information directly from the first virtual machine to at least one of the second virtual machine and a host, bypassing the virtual switch.
[0083] In Example 25, the subject of Example 24 may optionally include the instructions further causing at least one component of a system to configure the virtual switch to transmit information between a network and at least one of the first and second virtual machines without transmitting the information through the virtual switch.
[0084] In Example 26, the subject of Example 24 or 25 may optionally include the instructions further causing at least one component of a system to send initial information from a circuit to the virtual switch, send the initial information from the virtual switch to a functional unit for a swap operation to generate the initial information without sending the initial information to the first virtual machine before the swap operation is performed, and send the second information from the functional unit to the first virtual machine through the virtual switch.
[0085] Example 27 includes an object (such as a device, an electronic device (e.g., a circuit, an electronic system or both) or a machine) which has a means of performing one of the methods of Examples 25-28.
[0086] The items from Example 1 to Example 27 can be combined in any way.
[0087] The foregoing description and the drawings illustrate some embodiments to enable the person skilled in the art to implement the embodiments of the invention. Other embodiments may involve structural, logical, electrical, process-related, or other modifications. Examples merely represent possible variations. Parts and features of some embodiments may be included in or substituted for those of other embodiments. To the person skilled in the art, many other embodiments will become apparent upon reading and understanding the foregoing description. Therefore, the scope of protection of various embodiments is determined by the appended claims together with the full range of equivalents to which such claims entitle the holder.
[0088] The summary is provided to enable the reader to determine the nature and main content of the technical disclosure. It is presented with the understanding that it is not intended to limit or interpret the scope or meaning of the claims. The following claims are hereby incorporated into the detailed description, each claim constituting a separate embodiment.
Claims
[1] Electronic device comprising: a circuit for receiving information for transmission to at least one of a first virtual machine (141, 142) and a second virtual machine (141, 142) through a virtual switch (130); and a memory for storing configuration information established by the virtual switch (130) to enable the first virtual machine (141, 142) to bypass the virtual switch (130) and communicate with at least one of the second virtual machine (141, 142) and a host (120). [2] The apparatus of claim 1, wherein the virtual switch (130) is configured to transmit information from the first virtual machine (141, 142) to an external device (109) via the virtual switch (130), and is configured to allow the first virtual machine (141, 142) to bypass the virtual switch (130) and communicate with the external device (109). [3] The apparatus of claim 1 or 2, wherein the virtual switch (130) is configured to transmit information from the first virtual machine (141, 142) to the second virtual machine (141, 142) via a first communication path (101, 102, 103, 104, 105) through the virtual switch (130) and to set up the configuration information to enable the first virtual machine (141, 142) to bypass the virtual switch (130) and communicate with the second virtual machine (141, 142) via a second communication path (101, 102, 103, 104, 105), wherein the first and second communication paths (101, 102, 103, 104, 105) are configured to transmit information at different rates. [4] The apparatus of claim 3, wherein the virtual switch (130) is configured to transmit information from the first virtual machine (141, 142) to the host (120) via a third communication path (101, 102, 103, 104, 105) through the virtual switch (130) and to set up the configuration information to enable the first virtual machine (141, 142) to bypass the virtual switch (130) and communicate with the host (120) via a fourth communication path (101, 102, 103, 104, 105), the third and fourth communication paths (101, 102, 103, 104, 105) being configured to transmit information at different rates. [5] The apparatus of claim 1 or 2, wherein the virtual switch (130) is configured to receive first information from the circuit and send the first information to a functional unit (114) for a swap operation to generate second information without sending the first information to the first virtual machine (141, 142), and send the second information to the first virtual machine (141, 142) after the swap operation is completed. [6] The apparatus of claim 5, wherein the swapping operation comprises at least one of encryption, decryption and compression operations. [7] The apparatus of claim 1 or 2, wherein the virtual switch (130) is configured to monitor the communication flow associated with a communication path (101, 102, 103, 104, 105) directly coupled between the first and second virtual machines (141, 142) to determine whether the communication path (101, 102, 103, 104, 105) is to be deactivated. [8] The device according to claim 1 or 2, wherein the virtual switch (130) is configured to monitor the communication flow associated with a communication path (101, 102, 103, 104, 105) directly coupled between the first virtual machine (141, 142) and an external unit (109) to determine whether the communication path (101, 102, 103, 104, 105) is to be deactivated. [9] The apparatus of claim 1, wherein the apparatus comprises a processor (111) and the circuit is included in the processor (111). [10] The apparatus of claim 9, wherein at least a portion of the memory is included in the processor (111). [11] Electronic device comprising: a network controller (113) for receiving information for transmission to at least one of a first virtual machine (141, 142) and a second virtual machine (141, 142) via at least one first communication path (101, 102, 103, 104, 105) through a virtual switch (130); and a memory for storing configuration information established by the virtual switch (130) to enable the first virtual machine (141, 142) to bypass the virtual switch (130) and communicate with at least one of the second virtual machine (141, 142) and a host (120) via at least a second communication path (101, 102, 103, 104, 105). [12] The apparatus of claim 11, wherein at least a portion of the memory is contained in the network controller (113). [13] The apparatus of claim 11, wherein the virtual switch (130) is configured to deactivate the second communication path (101, 102, 103, 104, 105) when a parameter associated with a flow of communication on the second communication path (101, 102, 103, 104, 105) has expired. [14] The apparatus of claim 11, wherein the virtual switch (130) is configured to deactivate the second communication path (101, 102, 103, 104, 105) when a parameter associated with a flow of communication on the second communication path (101, 102, 103, 104, 105) is changed. [15] The apparatus of claim 11, wherein the virtual switch (130) is configured to send a request to the first virtual machine (141, 142), the request including information about whether to establish a direct communication path (101, 102, 103, 104, 105) from a source to a destination. [16] The apparatus of claim 15, wherein the virtual switch (130) is configured to update a flow table entry based on a response to the request sent to the virtual switch (130) from the first virtual machine (141, 142). [17] The apparatus of claim 11, wherein the virtual switch (130) is configured to perform hash calculation and table lookup associated with information transferred from the first virtual machine (141, 142) to the second virtual machine (141, 142). [18] A method for configuring a virtual switch (130), the method comprising: configuring a virtual switch (130) for transmitting information from a circuit to at least one of a first virtual machine (141, 142) and a second virtual machine (141, 142) through the virtual switch (130); and configuring the virtual switch (130) to transmit information directly from the first virtual machine (141, 142) to at least one of the second virtual machine (141, 142) and a host (120) bypassing the virtual switch (130), wherein configuring the virtual switch (130) is performed by at least one of a processor (111), a chipset (112), and a network controller (113) of a platform hardware. [19] The method of claim 18, further comprising: configuring the virtual switch (130) to transmit information between a network and at least one of the first and second virtual machines (141, 142) without transmitting the information through the virtual switch (130). [20] The method of claim 18, further comprising: sending first information from the circuit to the virtual switch (130); sending the first information from the virtual switch (130) to a functional unit (114) for a swap operation on the first information to generate second information without sending the first information to the first virtual machine (141, 142) before the swap operation is performed; and sending the second information from the functional unit (114) to the first virtual machine (141, 142) through the virtual switch (130). [21] The method of any of claims 18-20, wherein at least one of the first and second virtual machines (141, 142) and the virtual switch (130) is implemented on the host (120). [22] Non-transitory computer-readable storage medium containing instructions which cause a processing unit to: a virtual switch (130) configured to transmit information from a circuit to at least one of a first virtual machine (141, 142) and a second virtual machine (141, 142) via the virtual switch (130); and the virtual switch (130) is configured to transmit information directly from the first virtual machine (141, 142) to at least one of the second virtual machine (141, 142) and a host (120), bypassing the virtual switch (130). [23] The non-transitory computer-readable storage medium of claim 22, wherein the instructions further cause at least one component of a system (100) to configure the virtual switch (130) to transfer information between a network and at least one of the first and second virtual machines (141, 142) without transferring the information through the virtual switch (130). [24] The non-transitory computer-readable storage medium of claim 22 or 23, wherein the instructions further cause at least one component of a system (100): sends first information from the circuit to the virtual switch (130); sends the first information from the virtual switch (130) to a functional unit (114) for a swap operation on the first information to generate second information, without sending the first information to the first virtual machine (141, 142) before the swap operation is performed; and sends the second information from the functional unit (114) to the first virtual machine (141, 142) through the virtual switch (130). [25] An electronic device comprising means for executing the instructions contained on a non-transitory computer-readable storage medium according to any one of claims 22-24.
Citation Information
Patent Citations
Method and system for virtual machine networking
US20130174157A1
Systems and methods for handling virtual machine packets
US20140215463A1
Virtual network overlays
US20150131669A1
Systems and methods for input / output virtualization
WO2014004060A1