Method and system for virtual network function compute resource allocation
Patent Information
- Application Number
- CN202180018651.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-03-05
- Filing Date
- 2021-02-18
- Publication Date
- 2026-10-27
- Estimated Expiration
- 2041-02-18
Smart Images

Figure CN115244509B_ABST
Abstract
Description
[0001] Cross-references to related applications This application claims the benefit and priority of U.S. nonprovisional patent application No. 16 / 809,959, filed March 5, 2020, the entire disclosure of which is expressly incorporated herein by reference. Technical Field
[0002] This disclosure generally relates to the field of computer networking, and more specifically to methods and systems for the supply and allocation of resources for virtual network functions. Background Technology
[0003] With the proliferation of Network Function Virtualization (NFV) technology, many network functions previously performed by hardware devices (e.g., switching and firewall functions) are now typically implemented by virtual application devices (e.g., Virtual Network Functions (VNFs)). These VNFs often operate with different central processing unit (CPU) load requirements. For example, in a hyper-threaded environment, the control plane and data plane of a VNF may be locked onto different physical CPU cores. However, if the data planes from two different VNFs (e.g., data plane virtual CPUs (vCPUs)) are locked to the same physical CPU core, the performance of these VNFs may become unpredictable, potentially leading to performance degradation and other problems. Therefore, it can be difficult to allocate physical CPU cores to support these VNFs in an efficient manner that ensures the performance level of the VNFs while minimizing the cost of maintaining available physical CPU cores. Attached Figure Description
[0004] To provide a more complete understanding of this disclosure and its features and advantages, reference is made to the following description in conjunction with the accompanying drawings, in which: Figure 1 Illustrative examples of environments according to various implementations are shown, in which a virtual machine management service instantiates a virtual machine image (VMI) onto one or more processor cores of a server based on a virtual machine image (VMI) profile and the server's CPU capacity. Figure 2 Illustrative examples of environments according to various implementations are shown, in which VNFs are assigned from different CPUs of the socket based on VNF requirements; Figure 3 Illustrative examples of environments according to various implementations are shown, in which a virtual machine management service allocates the server's CPU capacity for VMI instantiation based on the server's available CPU capacity and a set of processor requirements. Figure 4 An illustrative example of an environment according to some implementations is shown, in which the VMI instantiation system allocates a set of processor cores to the VMI (which requires low latency performance) and a set of vCPUs; Figure 5 An illustrative example of an environment according to some implementations is shown, in which the VMI instantiation system allocates a processor core to the VMI (which requires low latency performance) and a single vCPU; Figure 6 An illustrative example of an environment according to some implementations is shown, in which the VMI instantiation system allocates a shareable CPU to the VMI (which requires non-low latency performance) and a set of vCPUs; Figure 7 An illustrative example of a process according to some implementations is shown for instantiating a virtual machine image using the available processor capacity of a set of processor cores subject to a set of CPU locking requirements. Figure 8 Example network devices suitable for performing switching, routing, and other networking operations, according to some embodiments, are shown; and Figure 9 A computing system architecture, comprising various components that communicate electrically with each other using connectors, is shown according to some embodiments. Detailed Implementation
[0005] Various embodiments of this disclosure are discussed in detail below. Although specific implementations are discussed, it should be understood that this is done for illustrative purposes only. Those skilled in the art will recognize that other components and configurations can be used without departing from the spirit and scope of this disclosure. Therefore, the following description and drawings are illustrative and should not be construed as limiting. Numerous specific details are described to provide a thorough understanding of this disclosure. However, in some cases, well-known or conventional details have not been described to avoid obscuring the description. References to one embodiment or an embodiment in this disclosure may be references to the same embodiment or any embodiment; and such references indicate at least one embodiment.
[0006] The reference to "an embodiment" or "an embodiment" means that a particular feature, structure, or characteristic described in connection with that embodiment is included in at least one embodiment of this disclosure. The appearance of the phrase "in one embodiment" in various places throughout the specification does not necessarily refer to the same embodiment, nor is it a separate or alternative embodiment mutually exclusive with other embodiments. Furthermore, various features that may be manifested by some embodiments but not others are described.
[0007] In the context of this disclosure and in the specific context in which each term is used, the terms used herein generally have their common meaning in the art. Alternative languages and synonyms may be used for any one or more of the terms discussed herein and should not be given special meaning in relation to whether a term is stated or discussed herein. In some cases, synonyms for certain terms are provided. The statement of one or more synonyms does not preclude the use of other synonyms. The use of examples anywhere in this specification, including examples of any terms discussed herein, is merely illustrative and is not intended to further limit the scope and meaning of this disclosure or any example terms. Likewise, this disclosure is not limited to the various embodiments given in this specification.
[0008] Without limiting the scope of this disclosure, examples of instruments, apparatus, methods, and related results according to embodiments of this disclosure are given below. Note that headings or subheadings may be used in the examples for the reader's convenience, but this should in no way limit the scope of this disclosure. Unless otherwise defined, the technical and scientific terms used herein have the meanings commonly understood by one of ordinary skill in the art to which this disclosure pertains. In the event of any conflict, the current document (including definitions) shall prevail.
[0009] Additional features and advantages of this disclosure will be set forth in the description which follows, and will be apparent in part from the specification, or may be learned by practicing the principles disclosed herein. The features and advantages of this disclosure may be realized and obtained by means of the tools and combinations particularly pointed out in the appended claims. These and other features of this disclosure will become more fully apparent from the following description and the appended claims, or may be learned by practicing the principles set forth herein.
[0010] Overview The invention is set forth in the independent claims, and preferred features are set forth in the dependent claims. A feature of one aspect may be applied alone or in combination with other aspects in any aspect.
[0011] This document discloses systems, methods, and computer-readable storage media for the required allocation of processor cores and corresponding CPUs for use with VNFs and other virtual machines.
[0012] In the example, the computer-implemented method executed by the virtual machine management service includes obtaining a request to instantiate a virtual machine image to implement a set of VNFs. The request specifies a set of requirements corresponding to the instantiation of the virtual machine image. The computer-implemented method also includes identifying available processor capacity from a server comprising a set of processor cores, the server being configured to implement virtual machines subject to additional processor requirements of the virtual machine; determining, based on the available processor capacity and one or more processor requirements, whether to instantiate the virtual machine image onto a subset of the server's processor cores to produce a determination; and, based on this determination, instantiating the virtual machine image onto the subset of processor cores to implement a set of VNFs.
[0013] In one example, a set of processor requirements specifies the allocation of a processor core that provides low-latency throughput for the VNF via instantiation of a virtual machine image. Therefore, the method implemented in this computer also includes identifying at least one processor core from the available processor capacity that satisfies the set of processor requirements, such that the processor core is reserved for the VNF. In another example, a set of requirements specifies the allocation of a first processor core for a data plane vCPU and a second processor core for a control plane vCPU. Using this set of requirements, the method implemented in this computer also includes identifying at least two processor cores from the available processor capacity that satisfy these requirements, wherein the first processor core is selected for the control plane vCPU and the second processor core is selected for the data plane vCPU.
[0014] In one example, a set of processor requirements specifies the allocation of any available processors to a set of virtual processors. Using this set of processor requirements, the computer implementation method also includes selecting a set of available processors from a subset of processor cores from the available processor capacity to implement the VNF. In some examples, selecting a set of available processors includes assigning data plane vCPUs to different processors within the set of available processors.
[0015] In another example, the computer-implemented method further includes obtaining a second request to terminate a virtual machine running on a subset of processor cores. The virtual machine is terminated in response to the second request. The computer-implemented method also includes reserving capacity for a subset of processor cores for the virtual machine.
[0016] In one example, the system includes one or more processors and memory containing instructions that, as a result of execution by the one or more processors, cause the system to receive a request to instantiate a virtual machine image to implement a set of Virtual Network Functions (VNFs). The request specifies a set of processor requirements corresponding to the instantiation of the virtual machine image. The instructions also cause the system to perform the following operations: identify the available processor capacity of a server configured to implement virtual machines subject to additional processor requirements of the virtual machine; and, based on the available processor capacity and the set of processor requirements, determine whether to instantiate the virtual machine image onto a set of processor cores of the server to produce a determination. The instructions further cause the system, based on this determination, to instantiate the virtual machine image onto the set of processor cores to implement a set of VNFs.
[0017] In one example, a non-transitory computer-readable storage medium stores executable instructions thereon, which, as a result of execution by one or more processors of a computer system, cause the computer system to perform the following actions: receive a request to instantiate a virtual machine image to implement a set of VNFs. The request specifies a set of processor requirements corresponding to the instantiation of the virtual machine image. These executable instructions also cause the computer system to perform the following actions: identify the available processor capacity of a server configured to implement virtual machines subject to additional processor requirements of the virtual machine; and determine, based on the available processor capacity and the set of processor requirements, whether to instantiate the virtual machine image onto a set of processor cores of the server to produce a determination. These executable instructions further cause the computer system, based on this determination, to instantiate the virtual machine image onto a set of processor cores to implement a set of VNFs.
[0018] Exemplary embodiments This document discloses systems, methods, and computer-readable storage media for providing real-time remote authentication for network enclaves across enclave servers, physical and virtual network devices, and applications running within enclave domains. This technology will be described in more detail in the following disclosures. The discussion begins with a detailed description of example systems, processes, and environments for obtaining and providing authentication information for various networks, and then describes computing components (such as...) within a specific network enclave. Figures 1 to 7 (As shown). The discussion concludes with a description of the example network and computing device (as shown). Figure 8 and Figure 9 (As shown).
[0019] Figure 1An illustrative example of an environment 100 according to various implementations is shown, in which a virtual machine management service 102 instantiates a VMI 106 onto one or more processor cores of server 108 based on a virtual machine image (VMI) profile and the CPU capacity of server 108. In environment 100, a user sends a request to the virtual machine management service 102 via client device 104 to instantiate the VMI 106 onto server 108 to implement a set of VNFs or other virtual machines. For example, a user might want to implement a VNF on server 108 (e.g., implement network functions on a virtual machine rather than on physical dedicated hardware) to handle specific network functions on behalf of the user. The underlying resources of the VNF can be scalable, allowing additional resources to be allocated based on the resource requirements of the VNF to provide the necessary functionality. It should be noted that although VNFs are used extensively throughout this disclosure for illustrative purposes, other virtual machines besides VNFs or as alternatives to VNFs can be implemented on server 108. For example, server 108 can be used to implement a combination of VNFs and application virtual machines.
[0020] In one example, server 108 is provided by virtual machine management service 102 to provide the foundation for Network Functions Virtualization Infrastructure (NFVI). NFVI may include hardware and software components that collectively provide functionality for implementing VNFs and other virtual machines. For example, server 108 may include one or more CPU sockets 110 that provide a physical connection between the CPU chip and the motherboard of server 108 via a set of pins. Although Figure 1 The server 108 shown is represented as having a single CPU socket 110, but the server 108 may be configured with multiple CPU sockets, each of which may be configured to implement a CPU chip.
[0021] In some examples, the CPU chip includes a set of processor cores 112-1 to 112-N. The CPU chip may be an integrated circuit mounted on server 108 via CPU socket 110. By implementing this set of processor cores 112-1 to 112-N, the CPU chip can provide hyper-threading to offer parallel computing capabilities. For example, processor cores configured to provide hyper-threading can appear as two or more logical CPUs to the operating system of server 108. However, the actual CPU chip maintains a single set of execution resources for each processor core 112-1 to 112-N. Therefore, two or more logical CPUs can share the physical execution resources of their respective processor cores 112-1 to 112-N.
[0022] While a processor core implementing hyper-threading can appear as two or more logical CPUs for the Server 108 operating system, implementing data plane vCPUs from different VNFs on the same processor core or the same CPU thread can lead to performance issues for each data plane vCPU. For example, if two or more data plane vCPUs from different VNFs are implemented on the same processor cores 112-1 to 112-N, these different VNFs may experience unpredictable performance because the two or more data plane vCPUs may each compete for the available resources of the processor core. This can lead to increased latency and, in some cases, VNF failure.
[0023] To mitigate the risk of implementing data plane vCPUs for different VNFs and other virtual machines on the same processor core or CPU thread, the virtual machine management service 102 can enforce a set of rules that, by default, will result in different processor cores being allocated to VNFs. For example, in response to a request to instantiate VMI 106 on server 108 to implement a VNF or other virtual machine, the virtual machine management service 102 can identify the current CPU allocation within slot 110 for implementing other VNFs and other virtual machines. The virtual machine management service 102 can evaluate server database 108 to identify which processor cores 112-1 to 112-N are being used for other VNFs or virtual machines. In some cases, the virtual machine management service 102 can identify which processor cores 112-1 to 112-N are being used to implement data plane vCPUs for these other VNFs or virtual machines.
[0024] Based on the allocation of processor cores 112-1 to 112-N for other VNFs and virtual machines, the virtual machine management service 102 can identify the available processor capacity of slot 110. As mentioned above, processor cores can be implemented using hyper-threading, allowing the processor core to appear as two or more logical CPUs to the operating system of server 108. While data plane vCPUs can be implemented using a single logical CPU of a processor core, other logical CPUs of the processor core may not be available for implementing other data plane vCPUs for other VNFs and virtual machines to avoid unpredictable behavior between these VNFs and virtual machines. Therefore, in identifying the available processor capacity, the virtual machine management service 102 can determine that these other logical CPUs are unavailable, regardless of whether they have sufficient capacity to implement additional vCPUs for VNFs or other virtual machines.
[0025] In one example, based on the available processor capacity within slot 110 and the current allocation of processor capacity for other VNFs and virtual machines, virtual machine management service 102 identifies one or more processor cores that can be allocated to instantiate VMI 106, and thus implement new VNFs or virtual machines in response to user requests. For example, as Figure 1 As shown, the Virtual Machine Management Service 102 has identified processor cores 112-1 and 112-3 as having available processor capacity to instantiate VMI 106 and implement VNFs or other virtual machines. The Virtual Machine Management Service 102 can allocate processor cores 112-1 and 112-3 in a dedicated manner, reserving these processor cores for use with VNFs or other virtual machines to be implemented via the instantiation of VMI 106.
[0026] In one example, for a VNF or other virtual machine, the virtual machine management service 102 implements the data plane vCPUs and control plane vCPUs of the VNF or other virtual machine onto different processor cores to ensure that sufficient resources are available for these vCPUs during the operation of the VNF or other virtual machine. This can provide improved low-latency throughput for the VNF or other virtual machine. In the example, the virtual machine management service 102 specifies that these processor cores are dedicated to the VNF or other virtual machine, so that the resources (e.g., processor capacity) of these processor cores cannot be shared with other VNFs or virtual machines, regardless of whether these resources are idle or in use.
[0027] In one example, Virtual Machine Management Service 102 allows a user to define a VMI profile for VMI 106. The VMI profile can be used to define one or more processor requirements for the instantiation of VMI 106 and the corresponding VNF or other virtual machine implementation. The VMI profile can be included in VMI 106, allowing the VMI profile and each request to instantiate VMI 106 to be provided to Virtual Machine Management Service 102 together. Alternatively, the VMI profile can be provided as part of the request (separate from VMI 106). This allows a user to define different VMI profiles for the same VMI 106. In some cases, Virtual Machine Management Service 102 can provide an interface (e.g., a graphical user interface (GUI), application programming interface (API) commands, etc.) to the user via client device 104 to allow the user to define the VMI profile for instantiating VMI 106 via the interface.
[0028] Through VMI profiles, users can define a set of one or more processor requirements to implement VNFs or other virtual machines using VMI 106. For example, through VMI profiles, users can specify that control plane vCPUs and data plane vCPUs for VNFs or other virtual machines will be implemented on different dedicated processor cores. Alternatively, users can specify that control plane vCPUs and data plane vCPUs will be implemented (e.g., fixed) to the same processor core. In some cases, users can specify that vCPUs for VNFs or other virtual machines can be implemented on shared processor cores, whereby the resources of the shared processor core can be shared among any number of VNFs and virtual machines subject to a set of default rules established by the virtual machine management service 102. For example, as described above, the default rules may include prohibiting the implementation of two or more data plane vCPUs on the same logical CPU of a processor core or entirely on the same processor core.
[0029] In one example, a user can specify in the VMI profile that the resulting VNF or virtual machine will have low latency throughput. For instance, in the VMI profile, a user can provide an entry (e.g., "low latency=TRUE", etc.) that, as a result of processing by the virtual machine management service 102, causes the virtual machine management service 102 to determine the low latency throughput required for the VNF or other virtual machine instantiated through VMI 106. Alternatively, in the VMI profile, a user can indicate that low latency throughput is not required (e.g., "low latency=FALSE", etc.).
[0030] In addition to defining whether a VNF or other virtual machine requires low latency throughput, users can also define the number of vCPUs required by the VNF or other virtual machine through the VMI profile, as well as the identifiers corresponding to the control plane vCPUs and data plane vCPUs. This allows the virtual machine management service 102 to determine how many vCPUs the implementation of the VNF or other virtual machine requires, and to determine allocation requirements to avoid allocating data plane vCPUs to the same processor core or logical CPUs of the same processor core. Based on the requirements specified in the VMI profile, the virtual machine management service 102 can determine what processor capacity is required to implement the VNF or other virtual machine.
[0031] As described above, the virtual machine management service 102 can implement a set of default rules for allocating processor capacity to new VNFs and virtual machines. In one example, if the user does not provide a VMI profile or otherwise does not define a set of requirements for allocating processor capacity to a VNF or other virtual machine, the virtual machine management service 102 can rely on this set of default rules to allocate processor capacity to the VNF or other virtual machine. For example, by default, the virtual machine management service 102 can assume that the VNF or other virtual machine requires low latency throughput. This can cause the virtual machine management service 102 to allocate dedicated processor cores to the VNF or other virtual machine. In some examples, the virtual machine management service 102 evaluates VMI 106 to estimate the system requirements of the VNF or other virtual machine that will be implemented via the instantiation of VMI 106. This can include identifying the operating system, data files, and applications that constitute VMI 106. Thus, the virtual machine management service 102 can determine what processor performance might be needed to implement the VNF or other virtual machines instantiated via VMI 106.
[0032] Based on the VMI profile and / or default rule groups maintained by the Virtual Machine Management Service 102, the Virtual Machine Management Service 102 can determine whether the processor cores 112-1 to 112-N of CPU socket 110 include sufficient available processor capacity for implementing VNFs or other virtual machines. For example, as described above, the Virtual Machine Management Service 102 can evaluate the server database of server 108 to identify which processor cores 112-1 to 112-N are being used for other VNFs or virtual machines. In some cases, the Virtual Machine Management Service 102 can identify which processor cores 112-1 to 112-N are being used to implement data plane vCPUs for these other VNFs or virtual machines. Through this process, the Virtual Machine Management Service 102 can identify the available processor capacity of CPU socket 110.
[0033] In response to determining the available processor capacity of CPU socket 110, and the processor capacity currently allocated to other VNFs and virtual machines, virtual machine management service 102 can determine whether any available processor capacity can be allocated for implementing a new VNF or other virtual machine by instantiating VMI 106. For example, while the available processor capacity may be sufficient to implement a VNF or other virtual machine, that available processor capacity may not meet a set of requirements defined in the VMI profile and / or a set of default rules maintained by virtual machine management service 102. For example, if a new VNF or virtual machine is to be implemented using a dedicated processor core per vCPU, and virtual machine management service 102 determines that there are not enough processor cores available for this purpose, virtual machine management service 102 may instruct CPU socket 110 that there is not enough processor capacity to implement a VNF or virtual machine, regardless of whether there is (overall) available processor capacity in the processor cores to implement a VNF or virtual machine.
[0034] In one example, in response to a request to instantiate VMI 106, Virtual Machine Management Service 102 determines whether to schedule any existing VNFs or virtual machines for deletion. For example, Virtual Machine Management Service 102 may evaluate the server database of server 108 to identify VNFs or virtual machines planned for deletion and estimate the timeframe for their deletion. Based on this evaluation, Virtual Machine Management Service 102 can determine when additional processor capacity in CPU socket 110 becomes available for implementing new VNFs and virtual machines via the instantiation of VMI 106. Virtual Machine Management Service 102 can use this determination as a factor in determining whether available processor capacity exists for new VNFs or virtual machines. For example, if Virtual Machine Management Service 102 determines that a set of processor cores will become available for allocation within a specific time period, Virtual Machine Management Service 102 can determine that this set of processor cores can be allocated for VNFs or other virtual machines subject to a set of processor requirements defined by the user or by Virtual Machine Management Service 102.
[0035] In some examples, request fulfillment may be subject to a timeout period, whereby the virtual machine management service 102 continues to evaluate CPU socket 110 to determine if there is sufficient available processor capacity that can be allocated to the new VNF or virtual machine. For example, if the virtual machine management service 102 initially determines that the request to instantiate VMI 106 cannot be fulfilled due to insufficient processor capacity available for the new VNF or virtual machine, the virtual machine management service 102 may continue to monitor CPU socket 110 and server database 108 to determine if any additional processor capacity becomes available before the timeout period expires. Therefore, as long as the timeout period has not passed, the virtual machine management service 102 may attempt to fulfill the request, subject to processor requirements defined in the VMI profile or in a default rule group maintained by the virtual machine management service 102. If the timeout period has passed, the virtual machine management service 102 may indicate that the request cannot be fulfilled due to a lack of available processor capacity for the VNF or virtual machine.
[0036] In one example, virtual machine management service 102 receives a request from client device 104 to terminate an existing VNF or virtual machine running within server 108. In response to this request, virtual machine management service 102 can identify the processor cores and corresponding logical CPUs used to implement the VNF or virtual machine. In some examples, virtual machine management service 102 terminates the specified VNF or virtual machine and reserves the processor capacity of the previously used processor cores and corresponding logical CPUs for a period of time. For example, in the request, the user can specify that the resources used to implement the VNF or virtual machine should be reserved so that the user can reimplement the VNF or virtual machine later. Virtual machine management service 102 can reserve this processor capacity until the previously determined time period has elapsed. If the time period has elapsed, virtual machine management service 102 can release the processor capacity for implementing other VNFs and virtual machines.
[0037] Figure 2 An illustrative example of an environment 200 according to various implementations is shown, in which a VNF is assigned to different CPUs from processor cores in socket 202 based on VNF requirements. In environment 200, CPU socket 202 includes a set of processor cores 204-1 to 204-N, where each processor core implements Hyper-Threading to allow the operating system to detect a pair of logical CPUs for each processor core. For example, as... Figure 2As shown, processor core 204-1 is configured with Hyper-threading, such that processor core 204-1 includes a first logical CPU 206-11 and a second logical CPU 206-12. Similarly, processor cores 204-2 (e.g., logical CPUs 206-21 and 206-22), processor cores 204-3 (e.g., logical CPUs 206-31 and 206-32), processor cores 204-4 (e.g., logical CPUs 206-41 and 206-42), and processor cores 204-N (e.g., logical CPUs 206-N1 and 206-N2) can also be configured with Hyper-threading.
[0038] like Figure 2 As shown, the various logical CPUs of processor cores 204-1 to 204-N can be allocated for different VNFs and virtual machines (subject to the processor requirements of these VNFs and virtual machines). For example, they can be implemented with low latency throughput and two vCPUs (e.g., as...). Figure 2 The VNF (Version 1) shown can be allocated two dedicated processor cores (e.g., processor core 204-1 and processor core 204-2). The first dedicated processor core can be used to implement the VNF's data plane vCPU, while the second dedicated processor core can be used to implement the VNF's control plane vCPU. Although each of these vCPUs can be implemented using a single logical CPU from the dedicated processor core, the other logical CPU can be reserved for the VNF. Therefore, it may not share other logical CPUs with other VNFs or other virtual machines.
[0039] In some examples, additional logical CPUs of the VNF or virtual machine (which are reserved for the VNF or virtual machine and not used to implement the control plane vCPU or data plane vCPU) can be used to perform other virtual functions of the VNF or virtual machine (e.g., emulation or virtual host). In some cases, this additional virtual function of the VNF or virtual machine can be implemented using a processor core that implements the control plane vCPU. This allows the data plane vCPU to use any resources of the dedicated processor core without encountering potential interference from the other virtual functions of the VNF. The performance of this additional virtual function may be subject to: the processor requirements set forth in the VMI profile, or the processor requirements defined by the Virtual Machine Management Service by implementing the default rule set for processor management and allocation.
[0040] For applications requiring low latency throughput but only a single vCPU (e.g., ... Figure 2For a VNF or virtual machine (LL2) as shown, the virtual machine management service can allocate a single dedicated processor core (e.g., processor core 204-3). The first logical CPU 206-31 of processor core 204-3 can be allocated as a vCPU for the VNF or virtual machine. A second logical CPU 206-32 can be reserved for the VNF or virtual machine, ensuring that the resources of the second logical CPU 206-32 are not shared with other VNFs or other virtual machines. This reserved logical CPU 206-32 can also be used to provide additional virtualization capabilities for the VNF, including but not limited to emulation and virtual hosting capabilities.
[0041] In one example, a user can indicate via a VMI profile that shared resources can be used to implement a new VNF or virtual machine. For instance, via a VMI profile, a user can specify that the new VNF or virtual machine does not require low-latency throughput. If the number of available processor cores is greater than zero, the virtual machine management service can allocate the number of available processor cores to the required VNF or virtual machine to implement the number of vCPUs for the VNF or virtual machine. As an illustrative example, processor core 204-4 is allocated to a non-low-latency VNF (e.g., NLL1), whereby a first logical CPU 206-41 is allocated for the control plane vCPU and a second logical CPU 206-42 is allocated for the data plane vCPU. The virtual machine management service can specify that processor core 204-4 and the corresponding logical CPUs 206-41 and 206-42 are shared. Therefore, if no other available processor cores are available to implement these additional VNFs, any available capacity of these logical CPUs 206-41 and 206-42 can be allocated to other VNFs.
[0042] In one example, if a new VNF or virtual machine can be implemented using shared resources, but no available processor cores exist for implementing the VNF, the virtual machine management service determines whether there is any available processor capacity on any shared processor core that can be used to implement the VNF. For example, as... Figure 2 As shown, available processor capacity from processor core 204-N can be allocated to a VNF or other virtual machine (e.g., NLL3). In one example, the virtual machine management service allocates processor capacity from a first logical CPU 206-N1 (which was allocated for the data plane vCPU of a previously implemented VNF) to a control plane vCPU of a new VNF. This may prevent the same logical CPU from being allocated to two or more data plane vCPUs, which could lead to unpredictable performance of the corresponding VNF or virtual machine. Therefore, as... Figure 2As shown, two VNFs (e.g., NLL2 and NLL3) can share the resources of processor core 204-N1, such that the first logical CPU 206-N1 of processor core 204-N1 is allocated for the control plane vCPU of the first VNF (e.g., vCPU 0 for NLL2) and the data plane vCPU of the second VNF (e.g., vCPU 1 for NLL3), and the second logical CPU 206-N2 of processor core 204-N1 is allocated for the data plane vCPU of the first VNF (e.g., vCPU 1 for NLL2) and the control plane vCPU of the second VNF (e.g., vCPU 0 for NLL3).
[0043] Figure 3 An illustrative example of an environment 300 according to various implementations is shown, in which a virtual machine management service 302 allocates CPU capacity of server 316 for VMI instantiation based on the available CPU capacity of server 316 and a set of processor requirements. In environment 300, an instantiation request processing system 304 of the virtual machine management service 302 receives a request to instantiate VMI 306 onto one or more processor cores of server 316 to implement a new VNF or virtual machine. The instantiation request processing system 304 may store VMI 306 in a VMI store 312 to allow for re-instantiation of VMI 306 in case of problems causing VNF or virtual machine corruption. For example, if a VNF or virtual machine becomes inoperable due to server failure, the instantiation request processing system 304 can obtain the corresponding VMI 306 from the VMI store 312 and provide VMI 306 to the VMI instantiation system 310 to re-instantiate VMI 306 onto resources of another server.
[0044] In one example, the request includes VMI profile 308, which specifies a set of processor requirements for a new VNF or virtual machine. For instance, VMI profile 308 could be provided within VMI 306, allowing the instantiation of VMI 306 to be subject to the requirements defined in VMI profile 308. Alternatively, VMI profile 308 could be provided in addition to VMI 306 in the request. Therefore, users can define different processor requirements for instantiating VMI 306 using different VMI profiles.
[0045] In one example, the VMI instantiation system 310 of the virtual machine management service 302 uses the processor requirements specified in the VMI profile 308 to determine which resources of server 316 are needed to instantiate VMI 306 and implement VNFs or virtual machines. For example, if the VMI profile 308 specifies that the VNF or virtual machine will have low latency throughput and it will include two vCPUs (e.g., a data plane vCPU and a control plane vCPU), then the VMI instantiation system 310 can determine that at least two processor cores from server 316 are needed to implement the VNF or virtual machine. Alternatively, if the VMI profile 308 specifies that the VNF or virtual machine does not require low latency throughput and it will include two vCPUs, then the VMI instantiation system 310 can determine that shared resources can be allocated to the VNF or virtual machine. The VMI instantiation system 310 can attempt to identify shared processor cores that are not allocated to other VNFs or other virtual machines. If unsuccessful, the VMI instantiation system 310 can identify a shared processor core with available capacity to allow the implementation of new VNFs or virtual machines that are subject to other processor requirements (e.g., data plane vCPUs of different VNFs cannot share logical CPUs, etc.).
[0046] To determine whether the request to instantiate VMI 306 (subject to a set of processor requirements specified in the VMI profile 308) or the request to instantiate VMI 306 by default can be satisfied by the Virtual Machine Management Service 302, the VMI instantiation system 310 can obtain CPU status information for each processor core of server 316 from the server monitoring system 314. This CPU status information can specify the current logical CPU and processor core allocation within server 316, as well as information on the available processor capacity within server 316. Based on this CPU status information, the VMI instantiation system 310 can determine whether server 316 has sufficient available processor capacity for a new VNF or virtual machine. For example, if the processor requirement set indicates that implementing a VNF or virtual machine requires two processor cores and these two processor cores cannot be shared with other VNFs or virtual machines, then the VMI instantiation system 310 can determine, based on the CPU status information and the available processor capacity defined therein, whether server 316 has at least two available processor cores that can be dedicated to a new VNF or virtual machine.
[0047] If the VMI instantiation system 310 determines that there is insufficient available processor capacity to implement a VNF or virtual machine, it may send a notification to the instantiation request processing system 304 indicating that the request cannot be satisfied. This may cause the instantiation request processing system 304 to send a response to the requester specifying that the request to instantiate VMI 306 cannot be satisfied due to a lack of available processor capacity for implementing the new VNF or virtual machine. However, if the VMI instantiation system 310 determines that there is sufficient available processor capacity to implement a VNF or virtual machine (subject to the processor requirements outlined in the VMI profile 308), it may select from available processor capacity, one or more processor cores, and corresponding logical CPUs for instantiating VMI 306. This may result in the implementation of a new VNF or virtual machine for the user.
[0048] Figure 4 An illustrative example of an environment 400 according to some implementations is shown, in which a VMI instantiation system 410 allocates a set of processor cores for a VMI 412 (which requires low latency performance) and a set of vCPUs. In environment 400, the VMI instantiation system 410 receives a request to instantiate the VMI 412 onto a set of processor cores provided via a server CPU socket 402. The server CPU socket 402 may include one or more processor cores 404-1 to 404-N, wherein each processor core 404-1 to 404-N is configured with hyper-threading. This can result in each processor core 404-1 to 404-N including at least two logical CPUs. For example, as Figure 4 As shown, processor core 404-1 can implement processors 406-11 and 406-12; processor core 404-2 can implement processors 406-21 and 406-22; processor core 404-3 can implement processors 406-31 and 406-32; processor core 404-4 can implement processors 406-41 and 406-42; and processor core 404-N can implement processors 406-N1 and 406-N2.
[0049] As described above, a request to instantiate a VMI 412 onto a set of processor cores on a server may include a VMI profile that defines a set of processor requirements for implementing a VNF or virtual machine via the instantiation of the VMI 412. Figure 4In the illustrative example, the VMI profile specifies that the resulting VNF or virtual machine requires low latency throughput and will include two vCPUs (e.g., a data plane vCPU and a control plane vCPU). Based on these processor requirements, the VMI instantiation system 410 can determine to allocate a dedicated processor core to each of the two vCPUs of the VNF or virtual machine.
[0050] In some examples, if the request to instantiate VMI 412 does not include a VMI profile or, in other cases, does not specify a set of processor requirements for implementing a VNF or virtual machine, then VMI instantiation system 412 may implement a default set of processor requirements for the VNF or virtual machine. For example, by default, VMI instantiation system 410 may assume that the VNF or other virtual machine requires low-latency throughput. This allows VMI instantiation system 410 to determine whether a dedicated processor core can be allocated for the VNF or other virtual machine.
[0051] Based on the requirements specified in the VMI profile or implemented by default by the VMI instantiation system 410, the VMI instantiation system 410 can determine whether the server CPU socket 402 has at least two available processor cores with available CPU capacity that can be allocated to vCPUs of VNFs or virtual machines. For example, as Figure 4 As shown, based on the requirement of low latency throughput for VNFs or virtual machines and the requirement of two vCPUs for VNFs or virtual machines, VMI instantiation system 410 can identify processor cores 404-1 and 404-2 as having available processor capacity for implementing VNFs or virtual machines subject to specific requirements.
[0052] like Figure 4As shown, the VMI instantiation system 410 can allocate logical CPU 406-11 of processor core 404-1 to the control plane vCPU of a VNF or virtual machine, and logical CPU 406-21 of processor core 404-2 to the data plane vCPU of a VNF or virtual machine. Furthermore, the VMI instantiation system 410 can designate other logical CPUs 406-12 and 406-22 of processor cores 404-1 and 404-2, respectively, as reserved for VNFs or virtual machines. This may prevent these logical CPUs from being allocated to other VNFs or virtual machines. However, this can allow these logical CPUs 406-12 and 406-22 to be used for other virtualization functions (e.g., emulation and virtual hosting). In some cases, these other virtualization functions can be implemented on the logical CPU 406-12 of processor core 404-1, which is dedicated to the control plane vCPU. This allows the data plane vCPU to use the computing resources of processor core 404-2 without restriction, which can improve the performance of the data plane vCPU and achieve low-latency throughput for the VNF or virtual machine.
[0053] Figure 5 An illustrative example of an environment 500 according to some implementations is shown, in which a VMI instantiation system 510 allocates a processor core for a VMI 512 (which requires low latency performance) and a single vCPU. In environment 500, the VMI instantiation system 510 receives a request to instantiate the VMI 512 onto a processor provided via a server CPU socket 502. Similar to the above combination... Figure 4 The described server CPU socket 402 and server CPU socket 502 may include one or more processor cores 504-1 to 504-N, each processor core may implement a set of processors. For example, as Figure 5 As shown, processor core 504-1 can implement processors 506-11 and 506-12; processor core 504-2 can implement processors 506-21 and 506-22; processor core 504-3 can implement processors 506-31 and 506-32; processor core 504-4 can implement processors 506-41 and 506-42; and processor core 504-N can implement processors 506-N1 and 506-N2. It should be noted that although each processor core 504-1 to 504-N is described as implementing two processors within a single processor core, each processor core 504-1 to 504N may include additional, alternative, or fewer processors.
[0054] A request to instantiate VMI 512 may include a VMI profile that specifies a set of requirements for allocating available processor capacity to a VNF or other virtual machine to be implemented using VMI 512. In this illustrative example, the VMI profile may specify that the VNF to be instantiated via VMI 512 will have low latency throughput. Furthermore, the VMI profile may specify that the VNF will include a single vCPU (e.g., vCPU 0). In some examples, the VMI profile may also indicate that a single vCPU will be implemented on a dedicated processor core or a dedicated physical CPU. However, if this indication is not present in the VMI profile of a VNF requiring low latency throughput, the VMI instantiation system 510 may utilize one or more default requirements to determine whether to allocate a dedicated processor core or a dedicated physical CPU to the VNF.
[0055] Based on the requirements specified in the VMI profile, the VMI instantiation system 510 can identify one or more processor cores with available CPU capacity, which can be allocated for vCPUs in VNFs or other virtual machines. For example, as Figure 5 As shown, based on the low latency throughput required by the VNF or other virtual machine and the single vCPU requirement of the VNF or other virtual machine, the VMI instantiation system 510 can identify the processor core 504-3 as having available processor capacity for implementing low latency processors for VNFs or other virtual machines subject to specified requirements.
[0056] In one example, VMI instantiation system 510 allocates available processor core 504-3 to a VNF or other virtual machine to enable the functionality of a single vCPU for the VNF or other virtual machine. VMI instantiation system 510 may designate processors 506-31 and 506-32 of processor core 504-3 as non-shared (e.g., reserved) and dedicated to the VNF or other virtual machine. For example, as... Figure 5 As shown, although processors 506-31 can be used to implement the vCPU of a VNF or other virtual machines, the VMI instantiation system 510 can be specified as a VNF (e.g., "LL2", as shown). Figure 5 (As shown) Processor 506-32 retains processor core 504-3. Therefore, although processor 506-32 can remain idle, its processor capacity can still be allocated for VNF.
[0057] In some examples, the available processor capacity allocated to VNFs or other virtual machines that is not used for VNFs or other virtual machines can be used in other ways to implement emulators or any other virtualization functions (e.g., virtual hosts) for VNFs or other virtual machines. Emulators or other virtualization functions can provide virtualization server functionality, network connectivity services, etc.
[0058] Figure 6 An illustrative example of an environment 600 according to some implementations is shown, in which a VMI instantiation system 610 allocates shared CPUs for a VMI 612 (which requires non-low latency performance) and a set of vCPUs. In environment 600, the VMI instantiation system 610 receives a request to instantiate the VMI 612 onto a set of processors provided via a server CPU socket 602. The server CPU socket 602 may include one or more processor cores 604-1 to 604-N, each processor core implementing a set of processors. For example, as... Figure 6 As shown, processor core 604-1 can implement processors 606-11 and 606-12; processor core 604-2 can implement processors 606-21 and 606-22; processor core 604-3 can implement processors 606-31 and 606-32; processor core 604-4 can implement processors 606-41 and 606-42; and processor core 604-N can implement processors 606-N1 and 606-N2. It should be noted that although each processor core 604-1 to 604-N is shown as implementing two processors within a single processor core, each processor core 604-1 to 604N may include additional, alternative, or fewer processors.
[0059] A request to instantiate VMI 612 may include a VMI profile that specifies a set of requirements for allocating available processor capacity to implement a VNF or other virtual machine via the instantiation of VMI 612. In this illustrative example, the VMI profile may specify that the VNF or other virtual machine requires non-low latency. Furthermore, the VMI profile may specify that two vCPUs should be implemented for the VNF or other virtual machine. In some cases, the VMI profile may also specify that one of the two vCPUs will be designated as a control plane vCPU (e.g., vCPU 0), while the other will be designated as a data plane vCPU (e.g., vCPU 1).
[0060] In one example, the VMI instantiation system 610 maintains the requirement that data plane vCPUs for different VNFs or other virtual machines be implemented on separate physical CPUs to prevent unpredictable behavior of these VNFs or other virtual machines. In some cases, the VMI instantiation system 610 may maintain this requirement as a default. Therefore, if the VMI profile does not specify the following requirement, the VMI instantiation system 610 may apply this requirement as a default: data plane vCPUs for VNFs or other virtual machines will be implemented on CPUs other than the CPUs implementing different data plane vCPUs. In some cases, if the VMI profile specifies a requirement that may conflict with this default requirement, the VMI instantiation system 610 may send a notification to the requester to indicate the conflict and inform the requester of the potential impact caused by two or more data plane vCPUs sharing the capacity of a physical CPU. The requester may update the VMI profile via an interface or otherwise indicate that it assumes the risk of the potential impact on its VNFs or other virtual machines or acquiesce to this default requirement.
[0061] Based on the requirements specified in the VMI profile, the VMI instantiation system 610 can identify one or more processor cores with available CPU capacity, which can be allocated to vCPUs of VNFs or other virtual machines. For example, as Figure 6 As shown, based on the requirement that VNFs or other virtual machines require non-low latency and that VNFs or other virtual machines require two vCPUs, the VMI instantiation system 610 can identify processor cores 604-4 and 604-N as having available processor capacity to implement two vCPUs for VNFs or other virtual machines subject to specified requirements.
[0062] In one example, if more than one processor core has available processor capacity for implementing two vCPUs for a VNF or other virtual machine, the VMI instantiation system 610 can select the processor core that provides the most processor capacity for the vCPU. For example, as Figure 6As shown, although processor core 604-N has available processor capacity that can be allocated to two vCPUs, implementing two vCPUs on processor core 604-N may result in sharing the resources of processor core 604-N with VNFs or virtual machines implemented on processor core 604-N. For example, processor core 604-N may implement a control plane vCPU (e.g., vCPU 0) for another VNF or virtual machine on processor 606-N1, and a data plane vCPU (e.g., vCPU 1) for another VNF or virtual machine on processor 606-N2. Therefore, VMI instantiation system 610 may select processor core 604-4 to implement vCPUs for new VNFs or other virtual machines, whereby processor core 606-4 may include unallocated processors 606-41 and 606-42.
[0063] It should be noted that other criteria can be used to select processor cores, or to select a specific CPU from a set of available processor cores, for use as a vCPU to implement a VNF or other virtual machine. For example, if the available processor capacity within processor core 604-N is greater than the available processor capacity of processor core 604-4, the VMI instantiation system 610 can choose to allocate the available processor capacity of processor core 604-N to a new vCPU, regardless of whether CPUs 606-41 and 606-42 of processor core 604-4 are unallocated or used for other VNFs or virtual machines. Alternatively (or alternatively), the VMI instantiation system 610 can identify the specifications of processors (which provide available processor capacity) to determine which processor will provide better performance for the VNF or other virtual machine. For example, the VMI instantiation system 610 can evaluate VMI 612 to identify the system requirements for implementing a VNF or other virtual machine. Based on these system requirements and the specifications of the processors (which provide available processor capacity), the VMI instantiation system 610 can select an appropriate processor core to implement the VNF or other virtual machine.
[0064] Figure 7 An illustrative example of a process 700 according to some implementations is shown, which is used to instantiate a virtual machine image using the available processor capacity of a set of processor cores subject to a set of CPU locking requirements. Process 700 may be performed by a virtual machine management service that can identify the available processor capacity of one or more servers and determine, based on that available capacity, whether the instantiation of the virtual machine image can be performed in a manner that satisfies the processor requirements specified in the request, either using a virtual machine image or as specified by the requester.
[0065] In one example, the Virtual Machine Management Service receives a 702 request to instantiate a virtual machine image. The virtual machine image can be used as a template to create a virtual machine that can be used to implement one or more VNFs, virtual computer systems, etc. In some examples, the virtual machine image may include a virtual machine image profile, which may specify the processor requirements used to instantiate the virtual machine image to implement a VNF or other virtual machine. Alternatively, in addition to the virtual machine image, the requester may provide a virtual machine image profile.
[0066] In response to a request, the Virtual Machine Management Service can evaluate the virtual machine image profile provided in the 704 request (either within the virtual machine image package or as a separate profile provided in the request) to determine CPU locking requirements for one or more vCPUs of a VNF or other virtual machine to be implemented using the virtual machine image. For example, the virtual machine image profile may specify requirements for implementing the VNF with low latency throughput. This can serve as an indication of vCPUs that will implement the VNF on a dedicated, non-shared processor core. Furthermore, the virtual machine image profile may specify requirements for maintaining the data plane vCPUs of the VNF in a separate processor core. As mentioned above, locking the data plane vCPUs of different VNFs to the same processor core or the same CPU thread can lead to unpredictable performance of these different VNFs. Therefore, the virtual machine image profile may specify this requirement. In some examples, this requirement may be defined by default by the Virtual Machine Management Service, so that the Virtual Machine Management Service can automatically apply the requirement if it is not specified in the virtual machine image profile.
[0067] In some examples, the virtual machine image profile may specify that a VNF does not require a dedicated processor core for each vCPU. This can serve as an indication to the virtual machine management service that the CPU allocated to a VNF can be shared with other VNFs and virtual machines. However, in some examples, the virtual machine management service may maintain the requirement that data plane vCPUs of different VNFs are not implemented on the same processor core or the same CPU on the same processor core. Therefore, while a VNF's data plane vCPU can be implemented on a CPU that can be shared with other VNFs, the virtual machine management service can allocate control plane vCPUs for other VNFs to that CPU.
[0068] In the example, the virtual machine management service identifies the current processor allocation on the 706 server CPU socket. For instance, for a specific server CPU socket, the virtual machine management service can evaluate each processor core and corresponding CPU to identify VNFs and other virtual machines using the CPU of the server CPU socket. In some cases, the virtual machine management service can evaluate a database that assigns identifiers to each VNF and virtual machine, corresponding to the CPU and processor core allocated to the VNF or virtual machine. Furthermore, the virtual machine management service can determine the processor requirements for each VNF and virtual machine implemented on the processor cores and CPUs of the server socket.
[0069] Based on the identification of the current allocation on the server CPU socket, the virtual machine management service can determine whether 708 has available CPU capacity that can be allocated for the instantiation of a virtual machine image and the implementation of a VNF. For example, the virtual machine management service can identify any unallocated CPUs from the various processor cores of the socket that could be used for a VNF or other virtual machine implemented in response to a request. The virtual machine management service can evaluate the aforementioned database to identify any CPUs that have not yet been allocated for use. In some cases, while a CPU may be idle (e.g., not in use), it may be reserved for another VNF or virtual machine that requires a processor core to be reserved for each vCPU of the virtual machine. Therefore, although a CPU may have the capacity to support a VNF or virtual machine, it may still be impossible to allocate the CPU to a VNF or virtual machine.
[0070] In some examples, the virtual machine management service determines whether any VNFs or virtual machines currently using the processor capacity of a slot are scheduled for deletion. If the virtual machine management service determines that a VNF or other virtual machine is scheduled for deletion at a specific time, it can determine that the processor capacity used by the VNF or other virtual machine will become available when that VNF or other virtual machine is deleted at that specific time. Therefore, when determining the available processor capacity for instantiating a virtual machine image, the virtual machine management service can identify any VNFs or other virtual machines scheduled for deletion within a specific time frame for use in instantiating the resulting virtual machine image.
[0071] If the virtual machine management service determines that there is no available processor capacity for instantiating a virtual machine image and implementing a VNF or other virtual machine, it can instruct 710 that there is a lack of capacity required to satisfy the request. For example, the virtual machine management service can reject the request and send a notification to the requester indicating that there is no available processor capacity for instantiating the virtual machine image. In some cases, the virtual machine management service may be subject to a timeout period repeating process 700 to identify any available processor capacity. Therefore, if no processor capacity is available and the timeout period has not yet passed, the virtual machine management service can continue to evaluate the current allocation on the server CPU sockets to determine whether previously allocated processor capacity has become available for allocation to a VNF or other virtual machine to be instantiated using the virtual machine image.
[0072] In the example, if the virtual machine management service determines that there is theoretically available processor capacity that can be used to instantiate a virtual machine image and implement a VNF or other virtual machine, the virtual machine management service can determine whether 712 that available processor capacity (if allocated) will meet the requirements provided in the request. As mentioned above, through the virtual machine image profile, the requester can specify that the VNF or other virtual machine to be implemented using the virtual machine image will have low latency or non-low latency throughput. Furthermore, through the virtual machine image profile, the requester can specify additional allocation requirements, such as defining that the data plane vCPUs of the VNF are not placed on the same processor core or on CPUs of the same processor core. Therefore, based on these requirements, the virtual machine management service can evaluate the processor cores and CPUs that constitute the available processor capacity to determine whether the allocation of that available processor capacity will meet the requirements stated in the virtual machine image profile.
[0073] If the virtual machine management service determines that the allocation of available processor capacity will not meet the requirements outlined in the virtual machine image profile, the virtual machine management service may indicate 710 that there is a lack of processor capacity to satisfy the request. The virtual machine management service may indicate to the requester that although there is available processor capacity in the server slot, allocating this capacity will result in one or more requirements not being met, which may hinder the performance of the VNF or other virtual machines if implemented using that available processor capacity. In some examples, the virtual machine management service may be subject to a timeout period repeating process 700 to identify any available processor capacity that, if allocated, would satisfy the set of requirements outlined in the virtual machine image profile. Therefore, if the timeout period has not yet passed, the virtual machine management service may continue to evaluate the available processor capacity and the current processor allocation for other VNFs and virtual machines to determine whether it is possible to allocate available processor capacity for the new VNF or other virtual machine, subject to the requirements outlined in the virtual machine image profile.
[0074] In the example, if the virtual machine management service determines that the available processor capacity (if used) will satisfy a set of requirements outlined in the virtual machine image profile, the virtual machine management service instantiates the 714 virtual machine image using the following: the available processor capacity subject to CPU locking requirements specified in the virtual machine image profile. For example, if the CPU locking requirements indicate that each vCPU of the VNF (e.g., data plane vCPU, control plane vCPU, etc.) requires a dedicated processor core, the virtual machine management service may allocate at least two processor cores that can be used to implement the VNF. Any unused capacity of these at least two processor cores may be reserved for the VNF such that, in response to a subsequent request to instantiate another virtual machine image, the virtual machine management service can determine that these at least two processor cores and the CPUs therein cannot be used to instantiate another virtual machine image.
[0075] In the example, if a CPU lockout requirement specifies that low-latency throughput is not required (e.g., non-low latency), the virtual machine management service allocates available processor capacity from any processor core to the VNF or other virtual machine to be implemented using the virtual machine image. For example, if the virtual machine management service allocates one or more processors that were not previously allocated to other VNFs or other virtual machines, the virtual machine management service may indicate that one or more processors are shareable. Therefore, in response to future requests to allocate available processor capacity for non-low latency VNFs or other virtual machines, the virtual machine management service may allocate available capacity from these shareable processors for use by new non-low latency VNFs or other virtual machines subject to CPU lockout requirements of previously implemented VNFs or virtual machines, as well as new non-low latency VNFs or other virtual machines with new CPU lockout requirements.
[0076] Figure 8 According to some embodiments, an example network device 800 suitable for performing switching, routing, and other networking operations is shown. Network device 800 includes a CPU 804, an interface 802, and a bus 810 (e.g., an External Controller Interface (PCI) bus). When operating under the control of appropriate software or firmware, CPU 804 is responsible for performing packet management, error detection, and / or routing functions. CPU 804 performs all these functions under software control, including the operating system and any appropriate application software. CPU 804 may include one or more processors 808, such as processors from the Intel® X98 family of microprocessors. In some cases, processor 808 may be hardware specifically designed to control the operation of network device 800. In some cases, memory 806 (e.g., non-volatile RAM, ROM, etc.) also forms part of CPU 804. However, there are many different ways to couple memory to the system.
[0077] Interfaces 802 are typically provided as modular interface cards (sometimes called "line cards"). They generally control the sending and receiving of data packets on the network and sometimes support other peripheral devices used with network device 800. Available interfaces include Ethernet interfaces, Frame Relay interfaces, cable interfaces, Digital Subscriber Line (DSL) interfaces, Token Ring interfaces, etc. In addition, various high-speed interfaces can be provided, such as Fast Token Ring interfaces, wireless interfaces, Ethernet interfaces, Gigabit Ethernet interfaces, ATM interfaces, HSSI interfaces, POS interfaces, FDDI interfaces, WIFI interfaces, 3G / 4G / 5G cellular interfaces, CAN bus, LoRa, etc. Typically, these interfaces may include ports suitable for communication with appropriate media. In some cases, they may also include a dedicated processor, and in some instances, volatile RAM. The dedicated processor can control communication-intensive tasks such as packet switching, media control, signal processing, cryptographic processing, and management. By providing a separate processor for communication-intensive tasks, these interfaces allow the main microprocessor 804 to efficiently perform routing calculations, network diagnostics, security functions, etc.
[0078] Although Figure 8 The system shown is a specific network device of this disclosure, but is by no means the only network device architecture that can implement this disclosure. For example, an architecture with a single processor for handling communication and routing calculations is typically used. Furthermore, network device 800 may also use other types of interfaces and media.
[0079] Regardless of the network device's configuration, it may employ one or more memories or memory modules (including memory 806) configured to store program instructions for general network operations and mechanisms for the roaming, routing optimization, and routing functions described herein. For example, program instructions may control the operation of an operating system and / or one or more applications. One or more memories may also be configured to store tables such as mobility binding, registration, and association tables. Memory 806 may also hold various software containers and virtualized execution environments and data.
[0080] Network device 800 may also include application-specific integrated circuit (ASIC) 812, which can be configured to perform routing and / or switching operations. ASIC 812 can communicate with other components in network device 800 via bus 810 to exchange data and signals and coordinate various types of operations of network device 800, such as routing, switching, and / or data storage operations.
[0081] Figure 9A computing system architecture 900 according to some embodiments is illustrated, which includes various components that communicate electrically with each other using connections such as a bus 906. The example system architecture 900 includes a processing unit (CPU or processor) 904 and a system connection 906 that couples various system components, including system memory 920 (e.g., ROM 918 and RAM 916), to the processor 904. The system architecture 900 may include a cache of high-speed memory that is directly connected to, adjacent to, or integrated into the processor 904. The system architecture 900 can copy data from memory 920 and / or storage device 908 to cache 902 for fast access by the processor 904. In this way, the cache can provide performance improvements and avoid latency for the processor 904 while waiting for data. These and other modules can control or be configured to control the processor 904 to perform various actions.
[0082] Other memory 920 may also be used. Memory 920 may include various different types of memory with different performance characteristics. Processor 904 may include any general-purpose processor and hardware or software services, such as services 1 910, service 2 912, and service 3 914 stored in storage device 908, which are configured to control processor 904 as well as dedicated processors (where software instructions are incorporated into the actual processor design). Processor 904 may be a completely independent computing system, containing multiple cores or processors, buses, memory controllers, caches, etc. Multi-core processors may be symmetric or asymmetric.
[0083] To enable user interaction with the computing system architecture 900, input device 922 can represent any number of input mechanisms, such as a microphone for voice, a touch-sensitive screen for gesture or graphical input, a keyboard, a mouse, motion input, voice input, etc. Output device 924 can also be one or more of a variety of output mechanisms known to those skilled in the art. In some instances, a multimodal system allows the user to provide multiple types of input to communicate with the computing system architecture 900. Communication interface 926 typically controls and manages user input and system output. There are no limitations on operation on any particular hardware configuration, therefore the basic features described herein can be readily replaced with improved hardware or firmware arrangements under development.
[0084] Storage device 908 is a non-volatile memory and may be a hard disk or other type of computer-readable medium that can store data accessible by a computer, such as magnetic tape cassettes, flash memory cards, solid-state storage devices, digital multifunction disks, magnetic tape cassettes, RAM 916, ROM 918, and combinations thereof.
[0085] Storage device 908 may include services 910, 912, 914 for controlling processor 904. Other hardware or software modules may also be considered. Storage device 908 may be connected to system connection 906. In one aspect, a hardware module performing a specific function may include software components stored in a computer-readable medium and connected to necessary hardware components (e.g., processor 904, connection 906, output device 924, etc.) to perform that function.
[0086] In summary, in this embodiment, the Virtual Machine Management Service receives a request to instantiate a Virtual Machine Image (VMI) to implement a Virtual Network Function (VNF). This request specifies a set of processor requirements corresponding to the VMI instantiation. In response to this request, the service identifies available processor capacity from a server comprising a set of processor cores. Based on the available processor capacity and the set of processor requirements, the service determines whether to instantiate the VMI onto a subset of the server's processor cores. Based on this determination, the service instantiates the VMI onto the subset of processor cores to implement the VNF.
[0087] For clarity, in some instances, this technology may be presented as comprising individual functional blocks, including devices, device components, steps or routines in a software-embodied method, or a combination of hardware and software.
[0088] In some embodiments, computer-readable storage devices, media, and memories may include cables or wireless signals containing bit streams, etc. However, when referred to, non-transitory computer-readable storage media explicitly exclude media such as energy, carrier signals, electromagnetic waves, and the signals themselves.
[0089] The methods according to the examples above can be implemented using computer-executable instructions stored in or available from a computer-readable medium. Such instructions may include, for example, instructions and data that cause or otherwise configure a general-purpose computer, special-purpose computer, or special-purpose processing device to perform a function or a set of functions. Some of the computer resources used may be accessible via a network. The computer-executable instructions may be, for example, binary, intermediate format instructions, such as assembly language, firmware, or source code. Examples of computer-readable media that may be used to store instructions, information, and / or information created during the methods according to the examples include hard disks or optical disks, flash memory, USB devices equipped with non-volatile memory, network storage devices, etc.
[0090] Devices implementing the methods according to these disclosures may include hardware, firmware, and / or software, and may take any of a variety of form factors. Typical examples of such form factors include laptops, smartphones, small form factor personal computers, personal digital assistants, rack-mount devices, standalone devices, etc. The functionality described herein may also be embodied in peripheral devices or add-on cards. As a further example, such functionality may also be implemented on a circuit board in a different chip or in a different process executed in a single device.
[0091] Instructions, media for conveying such instructions, computing resources for executing such instructions, and other structures for supporting such computing resources are means for providing the functionality described in these disclosures.
[0092] Although various examples and other information have been used to explain aspects within the scope of the appended claims, limitations on the claims should not be implied based on specific features or arrangements in such examples, as those skilled in the art can derive various implementations from these examples. Furthermore, while some subjects may have been described in language specific to structural features and / or method steps, it should be understood that the subjects defined in the appended claims are not necessarily limited to these described features or actions. For example, such functionality may be distributed differently or performed in components other than those identified herein. Rather, the described features and steps are disclosed as examples of components of systems and methods within the scope of the appended claims.
[0093] The claim language of stating "at least one of a group" indicates that one or more members of the group satisfy the claim. For example, the claim language of stating "at least one of A and B" means A, B, or A and B.
Claims
1. A computer-implemented method, comprising: A request to obtain an instantiated virtual machine image to implement a set of virtual network functions (VNFs) specifies one or more processor requirements corresponding to the instantiation of the virtual machine image. The one or more processor requirements specify the allocation of a first processor core for the data plane vCPU of the set of VNFs and the allocation of a second processor core for the control plane vCPU of the set of VNFs. The requirements specify that the first processor core is not shareable and the second processor core is shareable. The available processor capacity of the data plane vCPU is identified from the server, wherein the available processor capacity of the data plane vCPU includes a first group of processor cores, each processor core having multiple threads configured to implement virtual machines, and the identification of the available processor capacity of the data plane vCPU excludes processor cores of another VNF that have one or more threads assigned to a VNF that does not belong to the first group of VNFs from the first group of processor cores. Based on the identified available processor capacity of the data plane vCPU and the one or more processor requirements, a first subset of the first set of processor cores of the server is selected to be allocated to the data plane vCPU; The available processor capacity of the control plane vCPU is identified from the server, wherein the available processor capacity of the control plane vCPU includes a second set of processor cores, each processor core having multiple threads configured to implement virtual machines, and identifying the available processor capacity of the control plane vCPU includes including processor cores that already have one or more threads assigned to another VNF in the second set of processor cores. Based on the identified available processor capacity of the control plane vCPU and the one or more processor requirements, a second subset of the second set of processor cores of the server is selected to be allocated to the control plane vCPU; and Based on the selection of the second subset, the virtual machine image is instantiated onto the first subset of the selected processor cores and the second subset of the selected processor cores to implement the set of VNFs.
2. The computer-implemented method according to claim 1, wherein: The one or more processors require the allocation of processor cores, which provide low-latency throughput for the VNF via instantiation of the virtual machine image; and The method further includes identifying at least one processor core from the available processor capacity that meets the requirements of the one or more processors, wherein the processor core is reserved for the VNF.
3. The computer-implemented method according to claim 1 or 2, wherein: The one or more processors require the allocation of any available processors to a set of virtual processors; and The method further includes selecting a subset of available processors from the available processor capacity, from the processor cores, to implement the VNF.
4. The computer-implemented method according to claim 3, wherein, Selecting the set of available processors includes assigning the data plane vCPU to different processors within the set of available processors.
5. The computer-implemented method according to any one of claims 1 to 4, further comprising: Obtain a second request to terminate virtual machines running on a subset of the processor cores; The virtual machine is terminated in response to the second request; as well as Reserve a subset of the processor cores for the virtual machine.
6. A system comprising: One or more processors; as well as The memory includes instructions that, when executed by the one or more processors, cause the system to perform the following operations: A request to obtain an instantiated virtual machine image to implement a set of virtual network functions (VNFs) specifies one or more processor requirements corresponding to the instantiation of the virtual machine image. The one or more processor requirements specify the allocation of a first processor core for the data plane vCPU of the set of VNFs and the allocation of a second processor core for the control plane vCPU of the set of VNFs. The requirements specify that the first processor core is not shareable and the second processor core is shareable. The available processor capacity of the data plane vCPU is identified from the server, wherein the available processor capacity of the data plane vCPU includes a first group of processor cores, each processor core having multiple threads configured to implement virtual machines, and the identification of the available processor capacity of the data plane vCPU excludes processor cores of another VNF that have one or more threads assigned to a VNF that does not belong to the first group of VNFs from the first group of processor cores. Based on the identified available processor capacity of the data plane vCPU and the one or more processor requirements, a first subset of the first set of processor cores of the server is selected to be allocated to the data plane vCPU; The available processor capacity of the control plane vCPU is identified from the server, wherein the available processor capacity of the control plane vCPU includes a second set of processor cores, each processor core having multiple threads configured to implement virtual machines, and identifying the available processor capacity of the control plane vCPU includes including processor cores that already have one or more threads assigned to another VNF in the second set of processor cores. Based on the identified available processor capacity of the control plane vCPU and the one or more processor requirements, a second subset of the second set of processor cores of the server is selected to be allocated to the control plane vCPU; and Based on the selection of the second subset, the virtual machine image is instantiated onto the first subset of the selected processor cores and the second subset of the selected processor cores to implement the set of VNFs.
7. The system according to claim 6, wherein, The instructions that enable the system to identify the available processor capacity further enable the system to: It was determined that the other virtual machines implemented on the aforementioned set of processor cores would be deleted at a specific time; and Determine the availability of the set of processor cores used by the other virtual machines at the specific time.
8. The system according to claim 6 or 7, wherein: The set of processors requires specifying the first dedicated processor core required for the first vCPU and the second dedicated processor core required for the second vCPU; and The instructions that enable the system to determine whether to instantiate the virtual machine image onto the set of processor cores further enable the system to determine that the first dedicated processor core and the second dedicated processor core can be allocated using the set of processor cores.
9. The system according to any one of claims 6 to 8, wherein: The set of processors requires that they be allocated to enable the VNF group to be shared with other virtual machines; and The instructions that enable the system to determine whether to instantiate the virtual machine image onto the set of processor cores further enable the system to determine that the set of processor cores includes available capacity to implement the set of VNFs.
10. The system according to any one of claims 6 to 9, wherein, The instructions also cause the system to: A second request to terminate the set of VNFs was obtained; In response to the second request, terminate the set of VNFs; and The processor capacity of the set of processor cores used to implement the set of VNFs will be reserved for a period of time to allow the set of VNFs to be reimplemented using the processor capacity.
11. The system according to any one of claims 6 to 10, wherein, The instruction that enables the system to determine whether to instantiate the virtual machine image onto the processor core group further enables the system to determine whether the implementation of the VNF is executable, so that the VNF and the data plane vCPU of the other virtual machines can be implemented on a separate processor.
12. A non-transitory computer-readable storage medium having stored executable instructions thereon, which, when executed by one or more processors of a computer system, cause the computer system to perform the following operations: A request to obtain an instantiated virtual machine image to implement a set of virtual network functions (VNFs) specifies one or more processor requirements corresponding to the instantiation of the virtual machine image. The one or more processor requirements specify the allocation of a first processor core for the data plane vCPU of the set of VNFs and the allocation of a second processor core for the control plane vCPU of the set of VNFs. The requirements specify that the first processor core is not shareable and the second processor core is shareable. The available processor capacity of the data plane vCPU is identified from the server, wherein the available processor capacity of the data plane vCPU includes a first group of processor cores, each processor core having multiple threads configured to implement virtual machines, and the identification of the available processor capacity of the data plane vCPU excludes processor cores of another VNF that have one or more threads assigned to a VNF that does not belong to the first group of VNFs from the first group of processor cores. Based on the identified available processor capacity of the data plane vCPU and the one or more processor requirements, a first subset of the first set of processor cores of the server is selected to be allocated to the data plane vCPU; The available processor capacity of the control plane vCPU is identified from the server, wherein the available processor capacity of the control plane vCPU includes a second set of processor cores, each processor core having multiple threads configured to implement virtual machines, and identifying the available processor capacity of the control plane vCPU includes including processor cores that already have one or more threads assigned to another VNF in the second set of processor cores. Based on the identified available processor capacity of the control plane vCPU and the one or more processor requirements, a second subset of the second set of processor cores of the server is selected to be allocated to the control plane vCPU; and Based on the selection of the second subset, the virtual machine image is instantiated onto the first subset of the selected processor cores and the second subset of the selected processor cores to implement the set of VNFs.
13. The non-transitory computer-readable storage medium according to claim 12, wherein, The executable instructions further enable the computer system to: A second request to terminate the set of VNFs was obtained; In response to the second request, terminate the set of VNFs; and The set of processor cores will be retained for a period of time to allow the set of VNFs to be reimplemented using the set of processor cores.
14. The non-transitory computer-readable storage medium according to claim 12 or 13, wherein, Executable instructions that enable the computer system to recognize the available processor capacity further enable the computer system to: It was determined that the virtual machines implemented on the aforementioned set of processor cores would be scheduled for deletion at a specific time; and Determine the availability of the capacity of the set of processor cores used by the virtual machine at the specific time.
15. The non-transitory computer-readable storage medium according to any one of claims 12 to 14, wherein: The set of processors requires that the capacity of the processors allocated to implement the set of VNFs be shareable; and The computer system determines whether to instantiate the virtual machine image onto executable instructions on the set of processor cores, and further determines that the set of processor cores includes available capacity to implement the set of VNFs.
16. The non-transitory computer-readable storage medium according to any one of claims 12 to 15, wherein, The system determines whether to instantiate the virtual machine image onto the set of processor cores. Executable instructions further enable the computer system to determine whether the implementation of the VNF is executable, so that the VNF and the data plane vCPU of the other virtual machines can be implemented on separate processors.
17. The non-transitory computer-readable storage medium according to any one of claims 12 to 16, wherein: The set of processors requires specifying the first dedicated processor core required for the first vCPU and the second dedicated processor core required for the second vCPU; and The system determines whether to instantiate the virtual machine image onto executable instructions on the set of processor cores, and further determines that the computer system can allocate the first dedicated processor core and the second dedicated processor core using the set of processor cores.
18. The non-transitory computer-readable storage medium according to any one of claims 12 to 17, wherein, The server configured to implement the virtual machine is also configured to implement virtual machines for implementing the VNF and application virtual machines.
19. The non-transitory computer-readable storage medium according to any one of claims 12 to 18, wherein, The set of processors is required to be encapsulated in the virtual machine image.
20. An apparatus comprising: A module for obtaining a request to instantiate a virtual machine image to implement a set of virtual network functions (VNFs), the request specifying one or more processor requirements corresponding to the instantiation of the virtual machine image, the one or more processor requirements specifying the allocation of a first processor core for the data plane vCPU of the set of VNFs and the allocation of a second processor core for the control plane vCPU of the set of VNFs, the requirement specifying that the first processor core is not shared and the second processor core is shareable; A module for identifying the available processor capacity of the data plane vCPU from a server, wherein the available processor capacity of the data plane vCPU includes a first group of processor cores, each processor core having multiple threads configured to implement virtual machines, and identifying the available processor capacity of the data plane vCPU excludes processor cores of another VNF that have one or more threads assigned to a VNF that does not belong to the first group of VNFs from the first group of processor cores. A module for selecting a first subset of the first set of processor cores of the server to be allocated to the data plane vCPU based on the identified available processor capacity of the data plane vCPU and the requirements of the one or more processors; A module for identifying the available processor capacity of the control plane vCPU from the server, wherein the available processor capacity of the control plane vCPU includes a second set of processor cores, each processor core having multiple threads configured to implement virtual machines, and identifying the available processor capacity of the control plane vCPU includes including processor cores that already have one or more threads assigned to another VNF in the second set of processor cores. A module for selecting a second subset of the second set of processor cores of the server to allocate to the control plane vCPU based on the identified available processor capacity of the control plane vCPU and the requirements of the one or more processors; and A module for instantiating the virtual machine image onto the first subset and the second subset of the selected processor cores based on the selection of the second subset to implement the set of VNFs.
21. The apparatus of claim 20, further comprising: A module for implementing the method according to any one of claims 2 to 5.
22. A computer program product comprising instructions that, when executed by a computer, cause the computer to perform the steps of the method according to any one of claims 1 to 5.
Citation Information
Patent Citations
High availability handling network segmentation in a cluster
US20170242764A1