DYNAMIC-MODULAR AND ADJUSTABLE COMPUTER ENVIRONMENTS
The modular switch system addresses the inflexibility of existing systems by dynamically reconfiguring components to meet changing workloads, providing cost-effective adaptability and scalability.
Patent Information
- Application Number
- DE102022127085
- Authority / Receiving Office
- DE · DE
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2022-07-28
- Filing Date
- 2022-10-17
- Publication Date
- 2026-01-29
- Estimated Expiration
- 2042-10-17
AI Technical Summary
Existing computer systems are often optimized for a single use case, lacking flexibility and modularity, leading to increased costs and inefficiencies when workloads change over time.
A modular switch system with dynamically adaptable components that can reconfigure itself based on workload requirements, utilizing a Trigger Engine, Commodity Switch, and policy managers to optimize Quality of Scale (QoSc) properties for specific purposes.
Enables cost-effective, adaptable, and scalable systems that can dynamically adjust to changing workloads, reducing costs and enhancing system lifespan by optimizing hardware and software configurations.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
background
[0001] As computer systems become increasingly complex, it becomes ever more difficult to design and configure individual systems for different or all possible use cases. For example, a system might be optimized for high throughput in high-performance computing (HPC) systems or for low latency in large storage systems, and so on.
[0002] However, it is rare for a single system to be configurable in such a way as to cover multiple optimized use cases. Therefore, systems are often geared towards a single use case or a subset of use cases throughout their lifecycle. Designing such systems to be modular and adaptable at various points in their lifecycle (e.g., at purchase, deployment, startup, runtime, etc.) allows for flexibility to expand the scope of possible use cases and deployments, but also increases system costs. Furthermore, effectively enabling such modularity and adaptability requires careful design.
[0003] The purpose of this disclosure is to provide methods and systems that at least partially improve upon the aforementioned disadvantages of the known state of the art and, in particular, enable modularity and adaptability.
[0004] US 10 348 574 B2 refers generally to cloud computing and specifically to hardware management systems for disaggregated rack architectures in server rack deployments.
[0005] US 10 693 814 B2 refers generally to wide area network communication networks and specifically to an ultra-scalable, disaggregated Internet Protocol (IP) and Ethernet switching system for a wide area network.
[0006] US 2017 / 0 289 002 A1 refers to technologies for the use of dynamic underlay networks in cloud computing infrastructures.
[0007] The present invention is defined by independent claims 1, 9 and 17. Embodiments are the subject of the respective dependent claims. Brief description of the drawings
[0008] The present disclosure according to one or more different embodiments is described in detail with reference to the following figures. The figures serve only for illustration and show only typical or exemplary embodiments. Fig. Figure 1 shows a modular switch system and a currently configured switch system according to one or more of the examples described here. Fig. Figure 2 shows the switching between multiple configured switch systems using the modular switch system according to one or more of the examples described here. Fig. Figure 3 shows a triggering process that establishes clusters of disaggregated components between the multiple configured switch systems, according to one or more of the examples described here. Fig. Figure 4 shows scaling quality (QoSc) properties in one or more configured switch systems according to one or more of the examples described here. Fig. Figure 5 shows different scaling quality (QoSc) properties between the respective currently configured switch systems according to one or more of the examples described here. Fig. 6 is an example of a computing component that can be used to implement various features of the embodiments described in the present disclosure. Fig. Figure 7 shows a block diagram of an exemplary computer system in which various of the embodiments described here may be implemented.
[0009] The figures are not exhaustive and do not limit the present revelation to the exact form that is revealed. Detailed description
[0010] Examples of the disclosed technology describe a modular switch system (or a dynamically modular and adaptable switch component, which is used interchangeably) and one or more configured switch systems comprising disaggregated components, plugins, and managers that enable the flexibility of the configured switch system with respect to modularity and adaptability at different times of operation. The modular switch system and one or more configured switch systems can be defined according to several sets of operational properties. For example, the properties of memory capacity, processing power, quality of scale (QoSc), or other characteristics can be defined or set for the currently configured switch system.
[0011] The modular switch system can modify the virtual or physical components of the currently configured switch system using one or more engines or processes of the modular switch system. The currently configured switch system is dynamically adaptable according to the specifications defined by the modular switch system.
[0012] The currently configured switch system and the modular switch system can be implemented as a single system or as separate systems. The currently configured switch system can be configured for use cases such as a high-performance computing (HPC) cluster, a large storage system, or a general-purpose cluster, for example, deployed in a cloud environment. A similar design can be extended down to the operating system or application level. In some examples, the reconfigurability of the disaggregated components of the currently configured switch system is possible and measurable. Reconfigurability of the currently configured switch system can increase its lifespan while simultaneously reducing the costs of changing the system's implementation in a production environment.
[0013] In contrast, traditional systems rely on technical administrators to manually modify cluster components, storage availability, operating systems, applications, or even the physical location of the system. The decision of what needs to be changed in a traditional system is often determined by switching from one installed software application to another, without requiring a complete system reconfiguration. However, with the currently configured switch system, the modular switch system can dynamically select the specifications of the currently configured switch system to create a dynamically adaptable system, or select from one or more configured switch systems to be implemented as the currently configured switch system.
[0014] The disclosed technique enables the deployment of highly adaptable, configurable, and scalable systems that are less expensive than current options and allow users to adapt their systems as workload requirements change over time without having to replace the systems. For example, if the workload shifts from high-performance computing (HPC) to large-capacity storage systems in terms of scalability and characteristics, the disclosed technique allows the currently configured switch system to be adapted to the changing workload requirements. Examples of reconfiguration points include system manufacturing, system deployment, and various other points during the system's lifetime.Furthermore, the disclosed technique enables users to comply with customized preferences regarding configurations, design choices, hardware, software, packaging, interconnect interfaces, or other components of a currently configured switch system.
[0015] Furthermore, the one or more configured switch systems can conform to different Quality of Scale (QoSc) properties. QoSc properties can define a relationship between a system's virtual or physical hardware and its ability to adapt its use for a specific purpose. The QoSc properties of the one or more configured switch systems can be dynamically set by the modular switch system to create a currently configured switch system with QoSc properties optimized for a particular purpose. For example, QoSc properties can correspond to multiple dimensions, ranging from hardware-specific latency or bandwidth values to end-to-end properties encompassing hardware, the operating system, firmware applications, software, and other components of the currently configured switch system.
[0016] Throughout the disclosure, technical improvements are implemented. For example, the disclosed technique can improve computer systems that are conventionally deployed in long-term static configurations (e.g., supercomputers) by implementing a reconfigurable deployed system through the implementation of clusters of disaggregated components that define the operational characteristics of the network environment. Compared to composable systems, which involve relatively high production and reconfiguration costs, the disclosed technique can be manufactured more cost-effectively and offers better configurable options for deploying a system at a larger scale.In comparison to cloud infrastructure systems with flexibility but minimal requirements regarding the Quality of Scale (QoSc) property of large storage systems or HPC systems, the disclosed technique also offers the flexibility of scaling levels by optimizing various QoSc properties of multiple modular switch systems.
[0017] As illustrated here, a modular switch system can act as a controller to create a currently configured switch system with optimized QoSc properties for a specific purpose. In some examples, the modular switch system can select one or more configured switch systems, each with different QoSc properties, as a framework for creating the currently configured switch system at any given time.
[0018] Fig. Figure 1 shows a modular switch system and a currently configured switch system according to one or more of the examples described herein. As shown, the modular switch system 100 comprises a processor 104A, a memory 105A, and machine-readable media 106A. The currently configured switch system 140 comprises a processor 104B, a memory 105B, and machine-readable media 106B. As explained in more detail below, examples of the disclosed technique enable transformations from a generic modular switch, e.g., the modular switch system 100, to a configured switch system, e.g., the currently configured switch system 140. That is, in some examples, a reconfiguration process can take place in which the modular switch system 100 is reconfigured to the currently configured switch system 140.
[0019] The processors 104A and 104B (represented as processor 104A in the modular switch system 100 and processor 104B in the currently configured switch system 140) can be one or more central processing units (CPUs), semiconductor-based microprocessors, and / or other hardware devices capable of retrieving and executing instructions stored in a machine-readable storage medium 106. The processors 104A and 104B (including one or both processors 104A in the modular switch system 100 or the processor 104B in the currently configured switch system 140) can retrieve, decode, and execute instructions to control processes or operations for performing the modular switch.Alternatively or in addition to fetching and executing instructions, the 104A and 104B processors may contain one or more electronic circuits comprising electronic components for performing the functionality of one or more instructions, such as a Field Programmable Gate Array (FPGA), an Application-Specific Integrated Circuit (ASIC), or other electronic circuits.
[0020] Memory 105A, 105B (represented as memory 105A in the modular switch system 100 and memory 105B in the currently configured switch system 140) and machine-readable media 106A, 106B (represented as machine-readable media 106A in the modular switch system 100 and machine-readable media 106B in the currently configured switch system 140) can also be implemented.For example, memory 105 (including one or both memory 105A units in modular switch system 100 and memory 105B in the currently configured switch system 140) and / or machine-readable media 106 (including one or both machine-readable media 106A units in modular switch system 100 and machine-readable media 106B units in the currently configured switch system 140) can include random access memory (RAM) or other dynamic memory that can be used to store information and instructions to be executed by processors 104A and 104B. Memory 105A and 105B and / or machine-readable media 106A and 106B can also be used to store temporary variables or other intermediate information during the execution of instructions to be executed by processors 104A and 104B, respectively.The memory units 105A, 105B and / or the machine-readable media 106A, 106B may also include a read-only memory (“ROM”) or other static storage device connected to a bus to store static information and instructions for the processors 104A and 104B, respectively.
[0021] The modular Switch System 100 can consist of one or more modules that execute processes or operations. Examples of modules include the Trigger Engine 108, the Commodity Switch 110, the Network Computing Environment Module 112, the Disaggregated Components Module 114, the Plugin Module 116, and the Compute Manager Engine 118.
[0022] Trigger Engine 108 is configured to generate and transmit a trigger message (e.g., using an adjustable intermediate link or other device) to initiate a dynamic system design reconfiguration of the currently configured Switch System 140. Trigger messages can be transmitted between different policy managers implemented in the Modular Switch System 100 or the currently configured Switch System 140. Each trigger message can be received by Trigger Engine 108 of the Modular Switch System 100, and Trigger Engine 108 can be responsible for generating, transmitting, and receiving triggers within the Modular Switch System 100, as described herein.
[0023] Upon receiving the trigger message, the trigger engine 108 (and the corresponding components of the modular switch system 100) can initiate a change of the currently configured switch system 140 from a first configured switch system to a second configured switch system by switching between clusters of disaggregated components that correspond to the respective system definition.
[0024] For example, the currently configured Switch System 140 can correspond to a specific cluster of disaggregated components that define a set of operational properties. This set of operational properties can, for example, determine how much memory or processing power should be made available to the executing software applications (which predicts how fast the applications need to run), how much memory the currently configured Switch System 140 can access for executing processes, and other operational properties as defined throughout the disclosure.
[0025] In some examples, a trigger message can be generated in a two-stage process, in which monitoring data is fed from the currently configured switch system 140 to the modular switch system 100 in a first trigger message, and as soon as the modular switch system 100 compares the monitoring data (e.g., the workload prevailing on the currently configured switch system 140) with a threshold value, the modular switch system 100 can trigger a dynamic reconfiguration of the currently configured switch system 140 in a second trigger message (which is sent, for example, to the commodity switch 110) to initiate the reconfiguration process described here.For example, if the workload exceeds the threshold, the modular switch system 100 can reconfigure the currently configured switch system 140 into a first layout, and if the workload falls below the threshold, the modular switch system 100 can reconfigure the currently configured switch system 140 into a second layout. Further details regarding the triggering and reconfiguration process are provided in [reference to relevant documentation]. Fig. 3 and contained throughout the entire Revelation.
[0026] As an illustrative example, workload delays can occur in response to one or more conflicts (e.g., conflicts can correspond to workloads on a system interfering with each other, for example, because they are trying to use the same resource), latency, or bandwidth limitations. In some examples, the monitoring data may include information indicating conflicts, latency, and / or bandwidth limitations associated with a particular workload. In another example, the workload being handled by the currently configured Switch System 140 may be identified as a workload value and compared to Quality of Scale (QoSc) properties or other defined policies. If the value exceeds the QoSc property (e.g.,If the QoSc value does not exceed the threshold, the workload may be classified as delayed or hindered (which may trigger a reconfiguration of the currently configured switch system 140 at a later point in the process). The QoSc characteristics can, for example, correspond to multiple dimensions, from characteristics such as latency or bandwidth values for hardware to end-to-end characteristics for hardware, operating system, firmware applications, software, and other components of the currently configured switch system.
[0027] To continue the illustrative example, various levels of QoSc properties can be dynamically set, including minimum to maximum values corresponding to different QoSc properties, which can be determined dynamically or defined by an administrative user. The minimum value corresponding to a given QoSc property can specify a minimum amount of hardware resources for a configured switch system without hardware optimizations. The next level of each QoSc property can correspond to a hardware-optimized value, which determines a latency value and sets the hardware configuration to reduce the latency of the Commodity Switch 110's hardware components (see below).The next level of each QoSc property can correspond to a system-optimized value that defines a latency value and reduces latency for the firmware, operating system, and / or middleware components of the modular switch system, in addition to the previous components (e.g., hardware, etc.). The next level of each QoSc property can be the maximum layer that defines a latency value and reduces it for each of the software applications and each of the previously described components of the modular switch system.
[0028] In each of the workload and threshold examples, the workload (e.g., transfer rate, error rate, etc.) can be measured to determine a workload value or a workload-related metric (e.g., bits per second for a transfer rate workload or the number of errors per hour for an error rate workload, etc.), and the workload value can be compared to a threshold. If the workload value exceeds the threshold, the trigger engine 108 can generate the trigger message.
[0029] In another example, workload measurement can correspond to the workload processed at a specific location, including a local workload (e.g., within a local domain or under a switch) or a system-wide workload (e.g., across multiple domains or across multiple switches). If the workload processed at a specific location exceeds a threshold defined for that property, the system can be reconfigured to cause other devices / applications / layers to take on more or less of the workload processing. Identifying that the workload exceeds a threshold can initiate the generation of a trigger (from trigger engine 108), and the trigger can initiate the reconfiguration of the currently configured switch system. In some examples, different communication patterns can cause triggers to propagate up the stack (e.g.,(from the operating system to the application layer, etc.), which either results in a redistribution of the workload or a reconfiguration of the switches, thereby also allowing workload measurement to be discontinued. In this reconfiguration example, the rest of the system can absorb the traffic in the long term (e.g., by initiating traffic balancing or rerouting to other devices in the network).
[0030] In other examples, the workload can be defined by a pattern. In one system configuration, the trigger engine 108 can identify latency in data transmissions that repeatedly occur in a pattern when the number of data transmissions delayed within a predetermined period exceeds a threshold. In another example, the trigger engine 108 can identify a range conflict that is greater than a threshold, or the measured bandwidth is below a threshold of one gigabit per second. In the case of a range conflict (e.g., regarding access to a memory area from different nodes), the trigger engine 108 can reconfigure a switch system (e.g., the currently configured switch system 140). Fig. 1) Trigger from a standard memory to a large-scale shared memory configuration that may be more optimal for the shared memory access patterns.
[0031] In other examples, the workload can be defined by geographic properties. For instance, the system layout or landscape might identify proxy devices that provide one or more interfaces to external systems of the currently configured switch system 140. Instead of detecting traffic patterns to trigger a workload, in this example, the proxy device might be programmed using an interface to help identify patterns or application behaviors and classify those patterns or behaviors as a workload. The instructions can then be interpreted (e.g., by the commodity switch 110) to determine how and at what level, as described here, to reconfigure the currently configured switch system 140.In some examples, the identified proxy devices can provide information about the proposed workload behavior, including improvements in operational behavior compared to the proxy devices that can handle traffic balancing or rerouting processes for the currently configured Switch System 140.
[0032] In other examples, workload can be defined by time patterns. For instance, a deployed software application might be implemented gradually over time (e.g., as a soft rollout), while an unused application might be discontinued all at once. These implementation differences can help correlate the deployment of the application with a predictable pattern of changes to end-user devices.
[0033] In other examples, the trigger message can correspond to a number of operational properties. For example, the operational properties can change the set of configurable options from handling the workload above a latency threshold to handling the workload above a bandwidth threshold. In another example, the operational properties can change the set of configurable options to define different hardware requirements for a network interface controller (NIC).
[0034] In other examples, the trigger message might correspond to a reconfiguration request from a user device connected to the modular switch system 100. In this example, a user of the system might determine that the purpose of the currently configured switch system 140 should be changed from a first configured switch system to a second configured switch system. The request from the user device can be identified as a trigger message to dynamically configure the currently configured switch system to the disaggregated components corresponding to the second configured switch system.
[0035] The Commodity Switch 110 is configured to identify or select a configured switch system (e.g., upon receiving a trigger message, at a predetermined time interval, or by monitoring the workload of the currently configured switch system 140 in some other way). The currently configured switch system 140 is defined according to a set of operational characteristics. For example, the storage capacity, processing power, quality of scale (QoSc), or other features can be defined or set for the respective system.
[0036] The Commodity Switch 110 is configured to determine a workload class by measuring the data received or sent by the Modular Switch System 100. The measurement can be performed continuously or at a predetermined time interval.
[0037] In some examples, the commodity switch 110 is configured to determine a cluster of disaggregated components upon receiving the trigger message. These components are implemented (by module 114 for disaggregated components). The cluster of disaggregated components can include a policy manager, one or more configurable options, and a plugin.
[0038] The policy manager (implemented by the compute manager engine 118) is a compute application configured to measure the properties of the corresponding compute operations layer. The policy manager can include one or more fabric managers, resource managers, and application managers.
[0039] A fabric manager, for example, is a software component that initiates the reconfiguration of fabrics by instructing the fabric plugin. The fabric manager can act based on specific policies defined by the system administrator. The fabric manager can measure data transmitted between device connections (e.g., between packet forwarding engines (PFEs) in a switch fabric). The switch fabric can consist of switch interface boards (SIBs) that establish the connection between the PFEs via flexible PIC concentrators (FPCs).
[0040] In another example, a resource manager is a software component that initiates the reconfiguration of system resources (e.g., processors, RAM, storage, etc.) by instructing the operating system plugin and / or lower layers by instructing the fabric manager. The resource manager can act based on specific policies defined by a system administrator. It can measure CPU, RAM, storage, and network usage, as well as data traffic. The resource manager can decide when to change the resource configuration (e.g., memory, processor, etc.) for specific software applications (e.g., to improve image processing, enhance the user experience, etc.).
[0041] In another example, an application manager is a software component that initiates the reconfiguration of an application by instructing the operating system plugin and / or lower layers by instructing the resource manager. The application manager can act based on specific policies defined by a system administrator or system programmer. The application manager can measure application-specific metrics.
[0042] The one or more configurable options of the clustered disaggregated components can correspond to the configurable options of a currently configured switch system. For example, the one or more configurable options can specify the amount of processor power to handle a workload received by the currently configured switch system or the amount of memory to use in a cache storage device, according to individual operational characteristics. In some examples, the one or more configurable options can be set automatically and in real time in a virtual environment, while in a physical environment, they can be set manually.
[0043] The plugin (implemented by plugin module 116) can correspond to an application plugin, an operating system plugin, a firmware plugin, or other types of plugins implemented at different layers of a computing environment that add a specific feature to an existing computer program (e.g., to enable customization). For example, the plugin can be configured to implement the operational properties of each cluster of disaggregated components. The application plugin can be configured to implement the operational properties of one or more applications, their configuration, and their components. The operating system plugin can be configured to implement the set of operational properties of the operating system, its configuration, and its components.The firmware plugin can be configured to implement the operational properties of each system controlled by the firmware, such as bootstrap configuration, partitions, coherence domains, and devices included in the configuration, along with their operational properties. The fabric plugin can be configured to implement the operational properties of the topology, switches, and routers, as well as the operational properties of individual switches.
[0044] In some examples, the commodity switch 110 is configured to determine a cluster of disaggregated components upon receiving the trigger message, which are implemented, for example, in a bottom-to-top format (e.g., fabric to resource to application or another implemented format).
[0045] For example, the Commodity Switch 110 can access multiple policy managers, each corresponding to a different aspect of the system. These policy managers can correspond to, for example, a fabric layer, a component layer, a system layer, and an application layer.
[0046] In some examples, the managers and plugins can be organized in a hierarchy. For instance, the managers can contain policies (e.g., computer-implemented instructions and rules), and the plugins can implement the mechanisms for the system to carry out the actions. In some examples, the plugins can perform an upcall for warnings and information, and the managers can issue commands in response.
[0047] The policy managers can send a response to commodity switch 110 containing one or more commands. As an illustrative example, the response might include a warning message about changes in traffic that could justify a change in the configuration of the currently configured switch system 140, but the response could also include events such as outages, perceived security attacks, etc.
[0048] The Commodity Switch 110 can compare the responses of the policy managers to determine if consensus has been reached. If consensus is reached, the Commodity Switch 110 can determine that a reconfiguration can be initiated based on the consensus of the multiple policy managers. The reconfiguration can be implemented with the cluster of disaggregated components from one end to the other, as well as up and down. With each change to the cluster of disaggregated components, different operational properties are implemented for the currently configured switch system to correspond to the new cluster of disaggregated components.
[0049] In some examples, one or more plugins can query the policy managers to provide an alert message in conjunction with a continuous evaluation of the currently configured Switch System 140, or according to a timeframe (e.g., daily, weekly, etc.). For example, alerts can be issued from the plugins (e.g., child units) to parent devices or units within the same domain (e.g., switch, firmware, operating system, and application) or across multiple domains. The alerts can indicate behavior that requires action within a specific timeframe. Because the policy managers contain the policies and other computer-implemented rules, they may be best positioned to prompt action.In some examples, the Commodity Switch 110 can adjust its properties to the new balance based on the continuous reassessment of the workload corresponding to the configured switch system.
[0050] The Network Computing Environment Module 112 is configured to define a computer system configuration by selecting one of several predefined, currently configured switch systems, including a high-performance computing (HPC) system, a low-latency, large-capacity storage system, a large-capacity storage system, or a general-purpose cluster, such as one used in a cloud environment. The definition of the currently configured switch system can be determined by the virtual or physical disaggregated components associated with it, which determines how quickly, efficiently, or accurately the currently configured switch system can handle the received workload.
[0051] In some examples, the Network Computing Environment Module 112 can define a minimum value that corresponds to the set of operational properties for a specific configured switch system. For example, the set of operational properties can define large storage components or system scalability that correspond to the currently configured switch system.
[0052] In some examples, a configuration template can be defined for the respective configured switch system. The template can specify which QoSc property values must be met for the Commodity Switch 110 to adjust its operating characteristics to match the definition of the respective configured switch system. This might involve increasing memory sizes, adjusting configurations, or configuring applications. In some examples, a QoSc property value can define a performance requirement for a system component. The performance requirement (e.g., maximum allowable latency, minimum allowable bandwidth, etc.) can be defined for the configuration, and applications can be configured to meet performance, scalability, reliability, terminal latency, or other operating characteristics.In some examples, interface components and functions can be implemented to improve or enable runtime verification and proof-of-concept.
[0053] For each of the several predefined configured switch systems, various system configurations can be specified. These predefined configured switch systems can include, for example, a compute node with a minimum storage definition (e.g., one terabyte of data), a standalone single-rack system or smaller, a cluster with multiple racks and compute nodes, geographically distributed nodes utilizing "as a Service" (aaS) remote access or cloud-based function calls, disaggregated storage, or applications. Illustrative examples of applications might include: high-performance computing (HPC) applications (e.g., scientific computing or finite element modeling), memory-intensive applications (e.g., an in-memory database for scaling up or down or graph processing), or cloud applications (e.g.,in-memory applications for scaling out, machine learning, deep learning, or collaborative applications).
[0054] Module 114 for disaggregated components is configured to determine and set one or more clusters of disaggregated components, and multiple clusters of disaggregated components can be defined for a configured switch system. A cluster of disaggregated components can include, for example, memory, processor, network connections, hardware, firmware, system software, application stacks, or other components that can define the operational characteristics of a computing device.
[0055] In some examples, module 114 for disaggregated components is configured to set the clusters of disaggregated components according to the currently configured switch system at a specific time interval or upon a trigger message, including at runtime or boot time. For example, different types of plugins may exist for different configurations. In other examples, plugins may be reconfigured or replaced with the appropriate plugin for the respective configuration.
[0056] Plugin module 116 is configured to implement one or more plugins that correspond to a new configuration of the currently configured switch system 140. The plugins can, for example, monitor various types of configuration-specific information, perform an action relevant to the configuration in question, or execute other actions.
[0057] The Computing Manager Engine 118 is configured to access policies corresponding to the relevant configuration and to invoke their execution using plugins. In some examples, Computing Manager Engine 118 can interact with Plugin Module 116 to invoke the execution of the plugins.
[0058] Fig. Figure 2 shows the switching between multiple computer environments using the modular switch system, according to one or more of the examples described here. In this illustration, the modular switch system 200 and the currently configured switch system 240 correspond to... Fig. 2 the modular switch system 100 or the currently configured switch system 140 in Fig. 1.
[0059] As explained above, in some examples a reconfiguration process may take place in which the modular switch system 200 is reconfigured to the currently configured switch system 240.
[0060] In step 1, the currently configured switch system 240 communicates via a network connection with one or more other computer systems, including a first other computer system 210A and a second other computer system 210B. Depending on the configuration of the currently configured switch system 240, data can be transferred between the devices through this communication.
[0061] As an illustrative example, the currently configured switch system 240 can be configured as a high-performance computing (HPC) device, so that the operations performed by the currently configured switch system 240 can process data received from one or more other computer systems 210A at high speed (e.g., quadrillions of calculations per second in an HPC configuration compared to billions of calculations per second in a non-HPC configuration), based on the cluster of disaggregated components associated with the HPC configuration. The currently configured switch system 240 can execute a workload from one or more other computer systems 210A in accordance with the operational characteristics of the cluster of disaggregated components of the HPC configuration (e.g., corresponding to a first configured switch system).
[0062] In step 2, the modular switch system 200 can monitor the workload being processed by the currently configured switch system 240 and / or receive a trigger message associated with the workload being processed by the currently configured switch system 240. If the workload exceeds a threshold, the modular switch system 200 can determine a second configured switch system (to which it should convert / reconfigure) that is different from the active system corresponding to the first configured switch system.
[0063] Each of the first and second configured switch systems corresponds to several clusters of disaggregated components that define the set of operational properties of each configured switch system. Types of modular switch systems 220 are represented as first configured switch system 220A, second configured switch system 220B, and third configured switch system 220C.
[0064] The first configured 220A switch system in Fig. 2 can correspond to a large-scale HPC computing environment, but each configured switch system is possible in various implementations of the disclosure. In the HPC computing environment, for example, the NIC can optimize the Message Passing Interface (MPI) or another parallel computing architecture, enabling high efficiency in processing electronic communication with one or more other computer systems 210. In some examples, Ethernet (or another communication protocol) can be scaled up, while photo-line drives and X-Point can be scaled down.
[0065] The second configured 220B switch system can correspond to a large-scale shared-memory computing environment, but in various implementations of the revelation, any configured switch system is possible. For example, in a large-scale shared-memory computing environment, the NIC can optimize data operators, enabling performance improvements resulting from reduced cross-network paths, data filtering and / or manipulation close to the data, or other characteristics of the configured switch system. In some examples, Ethernet (or other communication protocols) and photo-line drives can be reduced, while the X-point can be increased.
[0066] The third configured 220C switch system can correspond to a large-scale cloud computing environment; however, various implementations of the disclosure are possible for any configured switch system. In a large-scale cloud computing environment, for example, the NIC can be tuned for cloud optimization by enabling QoSc properties required by specific customers utilizing portions of the cloud in question. This can increase or decrease the number of photoline drives for this configuration compared to other configurations. In some examples, the Ethernet (or other communication protocol) and X-Point can be reduced while the number of photoline drives can be increased.
[0067] In step 3, one of the illustrative configured switch systems is used to configure the currently configured switch system 240 to correspond to a second configured switch system. In other words, one of the first, second, and third configured switch systems 220A, 220B, and 200C, respectively, can comprise a currently configured switch system 240 into which the modular switch system 200 can be reconfigured. For example, if the first configured switch system 220A is the currently configured switch system 240 in use, a switch to the second configured switch system 220B or the third configured switch system 220C can be effected.
[0068] In step 4, the currently configured switch system 240 can process the workload according to the disaggregated components of the second configured switch system, which are now implemented as the currently configured switch system 240. In other words, the currently configured switch system 240 communicates over a network connection with one or more other computer systems, including a first other computer system 210A and a second other computer system 210B, using the new configuration settings of the currently configured switch system 240.
[0069] Fig. Figure 3 shows a trigger process for setting up clusters of disaggregated components between the multiple computing environments according to one or more of the examples described here. For example, a trigger process similar to the one in Fig. 2 shown in Fig. 3. The various policy managers, including one or more fabric managers, resource managers, and application managers, can be implemented to configure properties of different system components. Partitioning, clustering, application components, and other features of the currently configured Switch System 240 can be configured by the modular Switch System 200.
[0070] As explained here, various implementations are possible. For example, different policy managers can be implemented in the modular switch system 200 or in the currently configured switch system 240. The modular switch system 200 and the currently configured switch system 240 can be implemented on the same physical device or in physically separate locations. If the different policy managers in the currently configured switch system 240 are implemented separately from the modular switch system 200, the triggering process described here can send messages to the modular switch system 200 to initiate changes in the currently configured switch system 240.If the various policy managers in the currently configured Switch System 240 are implemented at the same physical location as the Modular Switch System 200, the Modular Switch System 200 can identify the triggers described herein without transmitting the triggers. Various implementations are possible without deviating from the core of the disclosure.
[0071] In block 310, the application manager 312 can initiate the reconfiguration of the application 314 by instructing the application plugin 316. In some examples, the application manager 312 can instruct lower layers of the currently configured switch system 240 (e.g., operating system (OS) 324, firmware 327, etc.) by instructing the resource manager 322. These actions can be based on specified policies defined by a system administrator or system programmer. For example, a user can create and / or modify one or more policies through the user interface of a device connected to a policy manager via a network. The application manager 312 can measure application-specific metrics (e.g., workload metrics including latency, error rate, etc.).
[0072] In Block 320, Resource Manager 322 can initiate the reconfiguration of system resources (e.g., processors, RAM, storage, etc.) by instructing the Operating System Plugin 326. In some examples, Resource Manager 322 can initiate the reconfiguration of firmware (e.g., persistent software programmed into the hard disk memory of the currently configured Switch System 240) by instructing the Firmware Plugin 328. In some examples, Resource Manager 322 can instruct lower layers of the currently configured Switch System 240 (e.g., processors, RAM, storage, etc.) by instructing the Fabric Manager 332. These actions can be based on specific policies defined by a system administrator. Resource Manager 322 can measure CPU, RAM, storage, and network usage and traffic data and decide when to reconfigure resource configurations (e.g., memory, processor, etc.).) are to be changed for specific software applications (e.g. to improve image processing, to improve user experience, etc.).
[0073] In block 330, the Fabric Manager 332 can initiate the reconfiguration of fabrics (e.g., Fabric Component 334, etc.) by instructing the Fabric Plugin 336. The Fabric Manager 332 can act based on specific policies defined by the system administrator. The Fabric Manager 332 can measure the data transmitted between device connections (e.g., between PFEs in a switching fabric). The switching fabric can consist of SIBs that establish the connection between the PFEs via FPCs.
[0074] In some examples, a plugin, including the application manager 312, the resource manager 322, or the fabric manager 332, can send monitoring statistics or alerts to a plugin 316, 326, 328, or 336 in a different layer. As shown, the fabric plugin 336 can send monitoring statistics or alerts to the OS plugin 326, and the OS plugin 326 can send monitoring statistics or alerts to the application plugin 316.
[0075] Fig. Figure 4 shows the Quality of Scale (QoSc) properties in one or more configured switch systems, which are designated as the currently configured switch system 140. Fig. 1 or the currently configured switch system 240 from Fig. 2. can be implemented according to one or more of the examples described here. Determining the QoSc properties can be used, for example, when switching from a first configured switch system to a second configured switch system (e.g., from a standard storage configuration to a large-scale shared storage configuration).
[0076] In block 410, a trigger message can initiate the switching of the currently configured switch system 140 from a first configured switch system to a second configured switch system by switching between clusters of disaggregated components that correspond to the respective system definition. During the switching process, the QoSc properties are determined by the modular switch system 100. Fig. 1 or the modular switch system 200 from Fig. 2 dynamically set.
[0077] For example, if the fabric components are configured in response to the trigger message at the fabric layer (e.g., Fabric Manager 332), Fabric Manager 332 can instruct the corresponding plugin (e.g., Fabric Plugin 336) to reconfigure the layer. In another example, Fabric Manager 332, via Fabric Plugin 336, can issue instructions to configure a memory-side accelerator, a memory NVM, a memory PMEM, a memory DRAM, CPUs, accelerators, buses, links, or other components of the fabric layer (e.g., Fabric Component 334). Various processes can be implemented at each layer of the currently configured Switch System 140, including at the application layer by Application Manager 312, at the resource layer by Resource Manager 322, or at the fabric layer by Fabric Manager 332, as shown in Fig. 3 shown.
[0078] As the QoSc properties increase, the QoSc properties are dynamically adjusted on other layers that correspond to a higher QoSc on other layers of the currently configured switch system 140 in Fig. 1 or of the currently configured switch system 240 in Fig. 2 correspond so that other components of the configured switch system are set. Illustrative examples of QoSc properties at each of the policy manager layers are in Fig. 5 shown.
[0079] In Fig. Section 4 illustrates the switching process with regard to set QoSc properties (e.g., increasing reconfigurability and scalability) as an example. Fig. Section 5 contains further examples of QoSc properties, which are for illustrative purposes and are not intended to limit the disclosure herein. As shown in Table 500, some QoSc properties may include: the configuration time, a component that is generally affected by a change in the QoSc level, the identity of a user with access to the component's configuration, the intermediate connection at the QoSc level, the power or cooling associated with the QoSc level, the computing power associated with the QoSc level, and the policy manager associated with the QoSc level.
[0080] In Block 510, the reconfigurability and scalability options can represent the lowest level of the QoSc examples shown. For example, configuration time can be a one-time process at the factory and generally affect the chassis. The configuration instance can be the manufacturer. Intermediate interconnect can be one or more hardware devices (e.g., a programmable application-specific integrated circuit (ASIC), HPE Slingshot intermediary, etc.). Performance or cooling can correspond to a maximum performance and cooling option relative to other QoSc levels. Computing power can correspond to a specific CPU identifier. The policy manager can correspond to a static quantity and capacity.
[0081] In Block 520, reconfigurability and scalability options can be at a slightly higher level than in Block 510. For example, configuration time can be set during reorganization, be customizable, or allow reconfiguration at a later time (more than once). The component generally affected by changes at this level can be any hardware component except the modular switch. The configuration instance can correspond to a customer or the manufacturer. The intermediate connection can be the addition of bridges. The power supply or cooling associated with this level can correspond to limited upgrades. The computing power can correspond to hidden cores or sockets activated by a license. The policy manager can correspond to a hidden manager that can be activated by a license.
[0082] In Block 530, the reconfigurability and scalability options may be at a slightly higher level than in Block 520. For example, when comparing the QoSc characteristic "Configuration Time," the measured values of the QoSc property when the system is configured according to Block 530 may be higher than the measured values of the QoSc property when the system is configured according to Block 520. Again, in Fig. Five illustrative examples are shown. The configuration time can occur during system startup or more frequently and can generally involve plug-in cards. The configuration instance can be the customer. The intermediate connection can be used to enable logging functions. The heating or cooling associated with this layer can correspond to turning components on and off. The computing power can correspond to various properties, from a static allocation or coherence to operating environments. The policy manager can correspond to various levels, including a static allocation or a profile to operating environments.
[0083] In Block 540, reconfigurability and scalability options can operate at a slightly higher level than in Block 530. Configuration time, for example, can occur during runtime or more frequently and generally involves programmatically reconfigurable modules. The configuration instance can correspond to a programmer or an administrative user. Intermediate interfaces can involve adding or removing memory semantics, adding put or get instructions, or other configurable options in the computer software. Power consumption or cooling associated with this level can correspond to the limited use of components. Computing power can correspond to reconfigurable allocation or coherence values for different applications. The policy manager can correspond to a reconfiguration allocation or profile for different applications.
[0084] In block 550, the options for reconfigurability and scalability may be at a slightly higher level than in block 540, and thus possibly at the highest level of reconfigurability and scalability shown in the figure in Fig. Figure 5 illustrates this. Configuration time can be automatic, according to a policy or trigger action, where the components operated for the administrator affect the operating environment, application telemetry, policy declarations, APLs, or other application components. The configuration instance can correspond to a fabric or resource manager. The intermediate connection can be a dynamic adjustment of performance parameters based on a policy or telemetry. The power or cooling associated with this layer can correspond to the power available to the solution layer via arbitration. Computing power can correspond to time- or preference-based telemetry that can control the reassignment of compute loads. The policy manager can correspond to a fabric manager's live reconfiguration based on the policy or telemetry.
[0085] It should be noted that the terms "optimize," "optimal," and the like, as used here, can mean striving for or achieving the most effective or perfect performance possible. However, it is clear to the average professional reading this document that perfection cannot always be achieved. Accordingly, these terms can also mean striving for or achieving the best or most effective performance possible or practical under the given circumstances, or striving for or achieving a better performance than can be achieved with other settings or parameters.
[0086] Fig. Figure 6 shows an example of a computing component that can be used to implement dynamically modular and adaptable computer systems in accordance with different embodiments. As in Fig. As shown in Figure 6, the computing component 600 can be, for example, a server computer, a controller, or another similar computing component capable of processing data. In the example configuration from Fig. The computing component 600 comprises a hardware processor 602 and a machine-readable storage medium 604.
[0087] The Hardware Processor 602 can be one or more central processing units (CPUs), semiconductor-based microprocessors, and / or other hardware devices capable of retrieving and executing instructions stored in the machine-readable memory medium 604. The Hardware Processor 602 can retrieve, decode, and execute instructions, such as instructions 606-610, to control processes or operations for implementing the dynamically modular and adaptable computer systems. Alternatively or in addition to retrieving and executing instructions, the Hardware Processor 602 can include one or more electronic circuits containing electronic components for performing the functionality of one or more instructions, such as a field-programmable gate array (FPGA), an application-specific integrated circuit (ASIC), or other electronic circuits.
[0088] A machine-readable storage medium, such as the machine-readable storage medium 604, can be any electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions. For example, the machine-readable storage medium 604 can be random-access memory (RAM), non-volatile RAM (NVRAM), electrically erasable programmable solid-state memory (EEPROM), a storage device, an optical disk, or the like. In some embodiments, the machine-readable storage medium 604 can be a non-transient storage medium, the term "non-transient" excluding the transitive transmission signals. As detailed below, the machine-readable storage medium 604 can be encoded with executable instructions, for example, instructions 606-610.
[0089] The hardware processor 602 can execute instruction 606 to receive a trigger message and modify a currently configured switch system corresponding to a plurality of clusters of disaggregated components. For example, the modular switch system 100, which is in Fig. 1 is shown, or the modular switch system 200, which is in Fig. As shown in 2, implement the command that is assigned to the currently configured switch system 140 in Fig. 1 or the currently configured switch system 240 in Fig. 2 corresponds.
[0090] In some examples, the trigger message is associated with a workload being processed by a currently configured switch system. The currently configured switch system is associated with a first configured switch system in a plurality of predefined configured switch systems. A plurality of clusters of disaggregated components for a plurality of predefined configured switch systems corresponds to a set of operational properties. The plurality of clusters of disaggregated components may include: a policy manager, one or more configurable options that process the workload received from the currently configured switch system according to the respective set of operational properties, and a plugin configured to implement the set of operational properties of a cluster of disaggregated components.
[0091] The hardware processor 602 can execute instruction 608 to determine the majority of clusters of disaggregated components that define a set of operational properties of a second configured switch system. In some examples, the first configured switch system differs from the second configured switch system in the majority of predefined configured switch systems.
[0092] Hardware processor 602 can execute instruction 610 to configure the currently configured switch system to match the second configured switch system. In some examples, the second configured switch system handles the workload using the majority of clusters of disaggregated components assigned to the second configured switch system, which differ from those of the first configured switch system.
[0093] In some examples, the modular switch system may include: a set of operational properties for a plurality of predefined configured switch systems; a plurality of clusters of disaggregated components corresponding to each from the set of operational properties, each from the plurality of clusters of disaggregated components including: a policy manager; one or more configurable options by which a workload received by a currently configured switch system is processed in accordance with the respective set of operational properties; and a plugin configured to implement the set of operational properties of a cluster of disaggregated components; a commodity switch compute device configured to select an initial configured switch system from the plurality of predefined configured switch systems;a processor and memory configured to store instructions;
[0094] In some examples, the set of operational properties changes the set of configurable options from processing the workload over a latency threshold to processing the workload over a bandwidth threshold.
[0095] In some examples, the set of operating characteristics defines different hardware requirements for a network interface controller (NIC).
[0096] In some examples, the policy manager includes an application manager, a resource manager, or a fabric manager.
[0097] In some examples, the set of operational properties of the cluster of disaggregated components includes a firmware plugin, an operating system plugin, or an application plugin.
[0098] In some examples, the trigger message is activated at the time the modular switch system is powered on.
[0099] In some examples, the trigger message is dynamically received from a user device that communicates with the modular switch system.
[0100] Fig. Figure 7 shows a block diagram of an exemplary computer system 700, in which various embodiments of the configuration described herein may be implemented. The computer system 700 can be used to execute machine-readable instructions to perform the processes described herein. In some examples, the computer system 700 can be combined with the modular switch system 100 or the currently configured switch system 140. Fig. 1 agree, although this should not be a limitation on the disclosure of the components provided here.
[0101] The Computer System 700 comprises a Bus 702 or other communication mechanism for transmitting information, and one or more Hardware Processors 704 connected to the Bus 702 for processing information. The Hardware Processor(s) 704 could, for example, be one or more general-purpose microprocessors.
[0102] The Computer System 700 also includes a main memory 706, such as random access memory (RAM), a cache, and / or other dynamic memory devices connected to the bus 702 to store information and instructions to be executed by the processor 704. The main memory 706 can also be used to store temporary variables or other intermediate information during the execution of instructions to be carried out by the processor 704. When such instructions are stored in memory media accessible to the processor 704, the Computer System 700 becomes a specialized machine adapted to perform the operations specified in the instructions.
[0103] The Computer System 700 also includes a read-only memory (ROM) 708 or other static storage device connected to bus 702 to store static information and instructions for the processor 704. A storage device 710, e.g., a magnetic disk, an optical disk, or a USB flash drive, etc., is provided and connected to bus 702 to store information and instructions.
[0104] The computer system 700 can be connected via bus 702 to a display 712, e.g., a liquid crystal display (LCD) (or a touchscreen), to show information to a computer user. An input device 714, including alphanumeric and other keys, is coupled to bus 702 to transmit information and command selections to the processor 704. Another type of user input device is the cursor control 716, such as a mouse, trackball, or cursor directional keys, for transmitting directional information and command selections to the processor 704 and for controlling cursor movement on the display 712. In some embodiments, the same directional information and command selections as with cursor control can be implemented by receiving touch inputs on a touchscreen without a cursor.
[0105] The Computer System 700 can include a user interface module for implementing a graphical user interface, which may be stored on a mass storage device in the form of executable software code that is executed by the computer device(s). This and other modules may include components such as software components, object-oriented software components, class components and task components, processes, functions, attributes, procedures, subroutines, segments of program code, drivers, firmware, microcode, circuits, data, databases, data structures, tables, arrays, and variables.
[0106] In general, the terms "component," "engine," "system," "database," "data store," and the like, as used here, can refer to logic embodied in hardware or firmware, or to a collection of software instructions that may have entry and exit points and are written in a programming language such as Java, C, or C++. A software component can be compiled and linked into an executable program, installed in a dynamic link library, or written in an interpreted programming language such as BASIC, Perl, or Python. It is understood that software components can be called by other components or by themselves and / or invoked in response to detected events or interruptions. Software components configured to run on computer devices may be stored on a computer-readable medium, such as...Software code may be provided on a compact disc, digital video disc, flash drive, magnetic disk, or other tangible medium, or as a digital download (and may initially be stored in a compressed or installable format that requires installation, decompression, or decryption before execution). Such software code may be stored partially or entirely in memory within the executing computing device for execution by the computing device. Software instructions may be embedded in firmware, such as an EPROM. Furthermore, the hardware components may consist of interconnected logic units such as gates and flip-flops, and / or programmable units such as programmable gate arrays or processors.
[0107] The Computer System 700 can implement the techniques described herein using custom hard-wired logic, one or more ASICs or FPGAs, firmware, and / or program logic, which, in combination with the Computer System, make the Computer System 700 a specialized machine or program it. According to one implementation, the techniques described herein are executed by the Computer System 700 in response to the Processor(s) 704, which executes one or more sequences of one or more instructions contained in the main memory 706. Such instructions may be read into the main memory 706 from another storage medium, such as the Storage Device 710. The execution of the instruction sequences contained in the main memory 706 causes the Processor(s) 704 to perform the process steps described herein.In alternative implementations, hardwired circuits can be used instead of, or in combination with, software instructions.
[0108] The term "non-transitory media" and similar terms as used here refer to all media that store data and / or instructions that cause a machine to operate in a particular way. Such non-transitory media can include non-volatile and / or volatile media. Non-volatile media include, for example, optical or magnetic disks, such as the Storage Device 710. Volatile media include dynamic storage devices, such as the Main Memory 706. Common forms of non-transitory media include, for example, floppy disks, flexible disks, hard disks, solid-state drives, magnetic tapes or other magnetic data storage media, CD-ROMs, other optical data storage media, physical media with hole patterns, RAM, PROM and EPROM, FLASH-EPROM, NVRAM, other memory chips or cartridges, and their networked versions.
[0109] Non-transitory media differ from transmission media but can be used in conjunction with them. Transmission media are involved in the transfer of information between non-transitory media. Examples of transmission media include coaxial cable, copper wire, and fiber optic cable, including the wires that make up the 702 bus. Transmission media can also take the form of sound or light waves, such as those generated in radio and infrared data communication.
[0110] The Computer System 700 also includes a Communications Interface 718, which is connected to the 702 bus. The Communications Interface 718 provides a bidirectional data communication connection to one or more network connections that are connected to one or more local area networks (LANs). For example, the Communications Interface 718 could be an ISDN (Digital Network for Integrated Services) card, a cable modem, a satellite modem, or a modem to establish a data communication connection to a corresponding type of telephone line. As another example, the Communications Interface 718 could be a Local Area Network (LAN) card to establish a data communication connection to a compatible LAN (or a WAN component to communicate with a WAN). Wireless connections can also be implemented.In each of these embodiments, the communication interface 718 sends and receives electrical, electromagnetic or optical signals that transmit digital data streams representing various types of information.
[0111] A network connection typically enables data communication over one or more networks to other data devices. For example, a network connection might establish a link over a local area network to a host computer or to data devices operated by an Internet service provider (ISP). The ISP, in turn, provides data communication services over the worldwide packet data communication network, now commonly referred to as the "Internet." Both the local area network and the Internet use electrical, electromagnetic, or optical signals to transmit digital data streams. The signals in the various networks, and the signals on the network link and across the 718 communication interface that transmit digital data to and from the 700 computer system, are examples of transmission media.
[0112] The Computer System 700 can send messages and receive data, including program code, via the network(s), network connection, and communication interface 718. Using the internet as an example, a server could transmit requested code for an application program via the internet, the ISP, the local network, and communication interface 718.
[0113] The received code can be executed by the processor 704 upon receipt and / or stored in the memory device 710 or other non-volatile memory for later execution.
[0114] All processes, procedures, and algorithms described in the preceding sections can each be embodied in code components executed by one or more computer systems or computer processors with computer hardware, and can be fully or partially automated by them. The one or more computer systems or computer processors can also be operated in such a way as to support the execution of the corresponding operations in a cloud computing environment or as Software as a Service (SaaS). The processes and algorithms can be partially or fully implemented in application-specific circuits. The various features and procedures described above can be used independently or combined in various ways.Various combinations and subcombinations are said to fall within the scope of this disclosure, and certain procedure or process blocks may be omitted in some implementations. The procedures and processes described herein are also not restricted to a particular order, and the associated blocks or states may be executed in other suitable orders, in parallel, or otherwise. Blocks or states may be added to or removed from the disclosed examples. The execution of certain operations or processes may be distributed across computer systems or computer processors, not just on a single machine, but distributed across a number of machines.
[0115] As used here, a circuit can be implemented in any form of hardware, software, or a combination thereof. For example, one or more processors, controllers, ASICs, PLAs, PALs, CPLDs, FPGAs, logic components, software routines, or other mechanisms can be implemented to form a circuit. In implementation, the various circuits described here can be implemented as discrete circuits, or the described functions and features can be partially or completely distributed across one or more circuits.Even if various features or functional elements are individually described or claimed as separate circuits, these features and functions may be shared by one or more common circuits, and such a description is not intended to require or imply that separate circuits are necessary to implement these features or functions. If a circuit is implemented wholly or partly in software, such software may be implemented to operate with a computer or processing system capable of performing the described functionality, such as the Computer System 700.
Citation Information
Patent Citations
US000010348574B2
US000010693814B2
Technologies for deploying dynamic underlay networks in cloud computing infrastructures
US20170289002A1