Placement of container workloads triggered by network traffic for efficient computing at network edge devices
By using the workload orchestrator to select the computing device closest to the user to run the workload in an edge computing environment, the problem of difficult workload placement to the end user is solved, achieving efficient resource utilization and low-cost service delivery.
Patent Information
- Application Number
- CN201980058545.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2018-10-04
- Filing Date
- 2019-09-23
- Publication Date
- 2025-06-03
- Estimated Expiration
- 2039-09-23
AI Technical Summary
In an edge computing environment, the placement of workloads is difficult to effectively close to the end user, resulting in increased response delays and the available CPU resources for edge nodes are scarce.
Send packets through the client to start the workload orchestrator, select and start the computing device or network element that is logically or physically closest to the specified location to run the workload, and terminate the workload if necessary to optimize resource utilization.
This enables the placement of workloads at edge nodes closest to users, reducing the use of computing resources and network bandwidth, reducing service costs, and improving response efficiency.
Smart Images

Figure CN112689828B_ABST
Abstract
Description
[0001] This application is filed as a PCT international patent application on September 23, 2019, and claims the priority benefit of a U.S. non - provisional patent application with serial number 16 / 152,267, filed on October 4, 2018, the entire disclosure of which is incorporated herein by reference in its entirety. Technical Field
[0002] One technical field of the present disclosure is the configuration of virtualized containers in a computer network. Another technical field is the management of network - interconnected devices. Yet another technical field is workload management in a virtual computing system. Background Art
[0003] The methods described in this section are methods that can be adopted, but not necessarily methods that have been previously conceived or adopted. Thus, unless otherwise indicated, these methods should not be considered to be prior art solely by virtue of their inclusion in this section.
[0004] A large number of network - interconnected devices and computing instances can be used to deploy virtual computing systems, cloud computing services, and cloud networks. Thus, a computer that is executing an application for a particular end - user may be physically or logically located at a remote location relative to the end - user's computer, resulting in a significant latency in machine response. A typical goal of network architects is to locate applications at the network device closest to the end - user, such as in a computing device physically or logically located at the network edge. Each edge node may include a site or cluster of multiple computing devices, and all edge nodes may be federated, but due to high demand in all applications or services, the available CPU resources in edge nodes may be scarce. Therefore, workloads should be placed as close as possible to user machines only when there are user machines utilizing them in the context of edge computing. The same problem also arises when determining the placement of microservices. Summary of the Invention
[0005] The appended claims may serve as the summary of the invention. Brief Description of the Drawings
[0006] In the drawings:
[0007] Figure 1 An example networked distributed computer system in which an embodiment can be implemented is shown.
[0008] Figure 2 An example data - processing flow between the elements in one embodiment is shown. Figure 1 of
[0009] Figure 3 An example processing flow that can be programmed to implement an embodiment is shown.
[0010] Figure 4A An implementation example of a TCP session involving the use of Kubernetes container virtualization is shown.
[0011] Figure 4B An implementation example involving an HTTP request in a service mesh architecture is shown.
[0012] Figure 5 A computer system in which some components can be implemented using it in an embodiment is shown. Detailed implementation
[0013] In the following description, for the purpose of illustration, many specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form to avoid unnecessarily obscuring the present invention. Embodiments are described in sections according to the following overview:
[0014] 1. General overview
[0015] 2. Structural and functional overview
[0016] 3. Implementation example - Hardware overview
[0017] 4. Benefits of various embodiments
[0018] 1. General overview
[0019] Aspects of the present invention are set forth in the independent claims, and the preferred features are set forth in the dependent claims. The features of one aspect can be applied to each aspect individually or in combination with other aspects.
[0020] In one embodiment, a programmed computing device is used to solve one or more of the technical problems outlined in the background art, and these computing devices are arranged and configured to operate as follows. The application author specifies a policy related to the desired location of workload execution for a specified type of client request. The client sends a packet that initiates a session or task suitable for mapping to the workload, and the packet is received at a first network element configured to forward the packet to the workload orchestrator. In response to receiving the packet, the workload orchestrator selects a computing device or other network element located as close as possible to the location specified in the policy to run the workload. The selected network element may start the workload to consume the session by signaling the workload system to start the workload locally. Thereafter, the first network element forwards all traffic of the session to the workload at the computing device. In one embodiment, the network element can store and forward session traffic while waiting for the workload to become available.
[0021] In one embodiment, a workload may be terminated in response to one or more predefined conditions or a combination of conditions. For example, the workload may be terminated after one or more sessions of the workload end, or after a set period of time after the workload is started, or after a set period of time of idle time. Each workload termination may be initiated by the workload itself, resulting in self-termination, or by a workload orchestrator.
[0022] In one embodiment, a method includes: sending a workload request to a workload orchestrator in response to receiving a packet associated with initiating a client-server session; the workload orchestrator selecting a selected server from among a plurality of available geographically or logically distributed servers in a network edge computing node to process the client-server session; the workload orchestrator sending a request to the selected server to create a workload to process the client-server session; receiving data identifying the selected server from the workload orchestrator; forwarding one or more other packets associated with the same client-server session to the selected server; wherein the method is performed by one or more computing devices.
[0023] In another embodiment, a method performed in a network infrastructure element of a network edge computing node includes: selecting a selected server from among a plurality of available geographically or logically distributed servers in a plurality of network edge computing nodes to process the client-server session in response to receiving a packet associated with initiating a client-server session; sending a request to the selected server to create a workload to process the client-server session; forwarding one or more other packets associated with the same client-server session to the selected server; wherein the method is performed by one or more computing devices.
[0024] Various embodiments may use different techniques to initiate a workload based on a client network session. In one method called strict triggering, a client network session may directly trigger the local creation of a workload network; although this method is expected to provide lower latency, it may be less efficient because the workload network may be sparsely used. In another method called lazy triggering, a client network session may trigger the local creation of a workload network in a cascading manner. For example, a first workload may send a session initiation packet to a second workload, resulting in the second workload being generated. This method is expected to have higher latency but will be more efficient because workloads in the network are generated only as needed. Using these techniques, localizing the network element that detects the session and generates the workload at the edge network device allows the client session to indicate where and when to place the workload in a highly distributed, scalable, and efficient manner.
[0025] Systems and apparatuses for implementing the methods described herein are also described, including network nodes, computer programs, computer program products, computer-readable media, and logic encoded on tangible media for implementing these methods.
[0026] 2. Structural and Functional Overview
[0027] 2.1 Distributed Network with Edge Computing Nodes
[0028] Figure 1 An example networked distributed computer system in which an embodiment can be implemented is shown. For the purpose of showing a clear example, Figure 1 a limited number of functional elements are shown, but an actual embodiment can use any number of such elements.
[0029] In Figure 1 the example of, network cloud 100 includes a plurality of computing nodes 102, 104, 106, 108, 110, 112 that are logically and / or geographically distributed throughout the cloud, including some computing nodes that are logically and / or physically close to client computing device 120 and other computing nodes that are remote or distant. Computing nodes 102, 104, 106, 108, 110, 112 can be communicatively coupled via links represented as arrows in Figure 1 ; in various embodiments, different connection topologies can be used, including partial mesh, full mesh, or others.
[0030] Network cloud 100 also includes a workload orchestrator 130, which can be implemented as a stand-alone computer or virtual computing instance, or as a process, daemon, or agent executed in a router, switch, other network interconnection element, or other computer in the cloud. In various embodiments, workload orchestrator 130 may or may not reside on a network interconnection element. In some embodiments, orchestration can be implemented using a round-robin method, consistent hashing computed locally, random value selection, or other methods that do not require sending requests from network interconnection devices to determine where to place the workload. Example functions of workload orchestrator 130 are described in other sections herein.
[0031] As in Figure 1As shown for example for node 110, each of the computing nodes 102, 104, 106, 108, 110, 112 includes at least one network element 122. The network element 122 may include a router, a switch, a firewall, a gateway, or other network interconnection elements, which are programmed to receive packets or flows from the client computing device 120 and forward, route, classify, or process the packets or flows according to the attributes of these packets or flows, including selectively forwarding to other computing nodes and / or the workload orchestrator 130. In one embodiment, each of the computing nodes 102, 104, 106, 108, 110, 112 further includes zero or more servers 124, and each server 124 may be implemented as a computer, a process, a microservice, or a virtual computing instance with or without virtualization and containerization. At least one of the computing nodes 102, 104, 106, 108, 110, 112 in the cloud 100 has at least one server 124. Each server 124 in the cloud 100 is programmed to implement applications, services, and / or microservices, including receiving requests from the client computing device 120, performing data processing services, transformations, or computations, and responding to these requests.
[0032] The network cloud 100 may also have connections to external elements 140, 150 such as computers, networks, management, or analysis systems. Examples include third-party web services that support the services provided by the servers 124 to the client computing device 120.
[0033] 2.2 Functional Examples
[0034] Figure 2 An example in one embodiment is shown Figure 1 of the example data processing flow between the elements of. For the purpose of showing a clear example, Figure 2 only the client computing device 120, the workload orchestrator 130, the network element 122, and the server 124 are shown. Figure 3 An example processing flow that can be programmed to implement an embodiment is shown. For the purpose of showing a clear example, it will be described in conjunction with Figure 2 the structure and data flow of Figure 3 .
[0035] Figure 3 And each other flowchart in this document shows an algorithm or plan that can be used as a basis for programming one or more of the functional modules related to the functions shown in the figure using a programming development environment or programming language considered suitable for the task. Therefore, Figure 1 、 Figure 2 in Figure 3This and every other flowchart in this document is intended as an illustration at the functional level at which those skilled in the art to which this disclosure pertains communicate with each other to describe and implement algorithms using programming. The flowchart is not intended to show every instruction, method object, or sub-step that would be required to program every aspect of the working program, but is provided at a high functional level illustration that is typically used at a high technical level in the art to communicate the basis for developing the working program.
[0036] First referring to Figure 3 , in one embodiment, the processing flow 300 can be programmed in the network element and the workload orchestrator to first receive packets at the network element from a client computer, as seen at block 302. In one embodiment, at step (1) of Figure 2 , the client computing device 120 sends a digital data packet to the network element 122, the digital data packet including a protocol identifier, a request identifier, payload data, or other values that signal the network element to initiate a session related to a service or application provided in the network cloud 100. The term "data" in this context is used broadly and can include packetized digital data representing voice or sound, video, or other media. The packet is received at the network element 122. Initiating a session can occur via packets that include a parameterized URL transmitted via HTTP, a request in another protocol represented by the request identifier, or other data sufficient to notify a properly programmed network element that a session has been initiated. The term "session" in this context refers to at least one request from a client and at least one response from a server, but any number of requests and responses may be involved for different services or applications.
[0037] At block 304, process 300 sends a workload initiation request to the workload orchestrator. For example, in response to receiving a packet that signals the start of a session, at step (2) of Figure 2 , the network element 122 is programmed to send a workload request to the workload orchestrator 130. The workload request can be defined in a proprietary protocol or can be transmitted via HTTP in a URL. The effect of the workload request is to request the workload orchestrator 130 to create or instantiate an execution process or workload 202 in a server 124 that can service the session. The workload request may include a copy of all or part of the packet received at the network element 122 for initiating the session, but including the packet is not required.
[0038] At block 306, using the workload orchestrator, process 300 selects an available, closest, and / or best server instance to handle the session with the client computer. For example, at step (1) of Figure 2At step (3), the workload orchestrator 130 selects a specific server 124 from multiple different servers located at different positions. As Figure 1 has been indicated in the description, nodes 102, 104, 106, 108, 110, 112 can be distributed throughout the network cloud 100 and may be far from the client computing device 120. Therefore, the workload orchestrator 130 is programmed with instructions for selecting a specific node that is logically or physically closest to the client computing device 120 and most suitable for use. Proximity can be determined by examining metadata such as the source network address of the client computing device 120 and selecting from a numerically stored mapping table that maps ranges of client addresses to corresponding addresses or identifiers of nodes 102, 104, 106, 108, 110, 112. Alternatively, proximity can be determined by examining the source address of the network element 122 that forwards the workload request to the workload orchestrator 130 and using a similar mapping table. Using a mapping table is not required, and the workload orchestrator can be programmed to use rules or other logic to select a node.
[0039] The best nodes 102, 104, 106, 108, 110, 112 selected by the workload orchestrator 130 do not need to be the physically or logically closest nodes. Instead, the workload orchestrator 130 can be programmed to examine values of metrics such as CPU load, storage usage, memory availability, or number of sessions, and be programmed to modify the selection of nodes 102, 104, 106, 108, 110, 112 based on those values. For example, the workload orchestrator 130 can be programmed to compute a list of the top N nodes that are logically or physically closest to the client computing device 120, and then use the values of the metrics to move down the list to arrive at the final selection. Threshold crossing, weighted mixing, or other algorithmic methods can be used to examine the values of the metrics to arrive at the final selection. Alternatively, a weighted mix of the metric values can be used to score each node 102, 104, 106, 108, 110, 112 in the list, and the node with the highest score can be selected.
[0040] When a server instance has been selected, at Figure 3 box 308, the process sends a request to the selected server instance to create a workload for servicing the session. For example, in response to receiving a workload request, the workload orchestrator 130 is programmed to generate a workload 202 on the server 124, as Figure 2 indicated in step (3). A "workload" in this context refers to an instance of a service, an instance of an application, a process, an agent, or a daemon that is programmed or configured to service a session initiated by the client computing device 120.
[0041] Optionally, at block 309, the process waits for an acknowledgement from the selected server instance indicating that the workload has been created and is running; in some embodiments, if the acknowledgement is not received, the selection step of block 306 is performed again to result in a different server being selected. In some embodiments, the workload orchestrator may send a single packet to the server to cause the server to start launching the workload such that after completion of a TCP or HTTP session characterized by multiple round trips, the workload is ready and available. This method can prevent the workload orchestrator from becoming a bottleneck in the system.
[0042] At block 310, the process sends data identifying the selected server instance to the network element. Block 310 may involve reprogramming the forwarding table of the network element such that all subsequent packets of the same session received at the network element from the client computing device are forwarded to the selected server instance, as seen at block 312. Thus, for packets other than the session initiation packet, the workload orchestrator 130 is bypassed and the packets are forwarded from the network element 124 to the server 124.
[0043] To implement the foregoing functionality, a network element 122 such as a router or switch may be programmed with a daemon, agent, or service, a unit configured to be an application or configured to be an operating system, and having instructions that can effectively perform the specified function. Similarly, the workload orchestrator 130 may be programmed with instructions configured to perform the functions that have been described for it. In some embodiments, the workload orchestrator 130 may be integrated with the network element 122, and the workload orchestration functionality described herein may form part of the operating system or system service of the network element.
[0044] In some embodiments, a fully recursive method can be programmed where groups arrive at a node, a single group trigger is sent to another node, work is performed on the current node until a condition occurs that causes it to need to leave the node, and then a single group trigger is sent to another node, thereby recursively invoking the process. In some embodiments, the foregoing method can be implemented as a modified dynamic service function chain where the chain links are dynamic, function instantiation is dynamic and created on the fly, the decision to move to a new node in the chain is based on environmental factors of the computing infrastructure (such as running out of memory or having too many threads) rather than being pre-specified, and a single trigger packet is used to prepare workload instantiation in advance such that the workload may be started with the workload state passed in the trigger packet before the handshake for the workload data connection has been completed. The local decision of which node to process next can be complex or simple. For example, the workload can decide to process the entire request or pass it on at any time if the transfer occurs at an instant where the local state of the workload can be resumed from. The minimum amount of workload processing is 0, which means the workload is simply passed to another node.
[0045] 2.3 Session tear-down or termination
[0046] Optionally, process 300 may include steps for tearing down or terminating the workload when the client-server session is complete. In some implementations, the server-side code for a particular microservice, application, or server instance can implement instructions to detect when a client-server session, transaction, or response is complete, and can automatically tear down or terminate the session or server instance as a response. In other embodiments, at block 314, the network element can receive a server response or packet associated with completing the session from the client computer. That is, in certain protocols or request-response sessions, there may be packets that carry protocol identifiers, protocol values, or other data in the header or payload that signal the end of the session. In response to detecting such a value, at block 316, the process sends a workload termination request to the workload orchestrator 130. At block 318, using the workload orchestrator, the selected server instance is instructed to terminate.
[0047] Accordingly, the workload can be terminated after the session ends. Additionally or alternatively, process 300 can implement an active timeout, where the workload is terminated after a set time since its start. Additionally or alternatively, process 300 can implement an idle timeout, where the workload is terminated after a set period since it became idle. The specific workload termination technique can be specified by the workload, by the workload orchestrator, or via configuration data. In one embodiment, process 300 further includes performing one of the following operations: receiving a packet associated with completing the same client-server session, determining that a specified time has elapsed since sending a request to create the workload to the selected server, or determining that a specified idle period has elapsed since sending a request to create the workload to the selected server and the selected server has been idle during that idle period; and in response thereto, sending a workload termination request to the workload orchestrator, which then instructs the selected server to terminate.
[0048] Alternatively, process 300 further includes performing one of the following operations: receiving a packet associated with completing the same client-server session, determining that a specified time has elapsed since sending a request to create the workload to the selected server, or determining that a specified idle period has elapsed since sending a request to create the workload to the selected server and the selected server has been idle during that idle period; and in response thereto, instructing the selected server to terminate.
[0049] 2.4 TCP-KUBERNETES Session Example
[0050] Figure 4A An implementation example of a TCP session involving the use of Kubernetes container virtualization is shown. At step (1), the client computing device 120 sends a SYN packet that identifies the client address, client port number, service address, and service port number. The request uses the process previously described for Figure 2 、 Figure 3 to pass through the cloud network 100 to reach the virtual switch (vSwitch) at Node1, which is a computing node. In response, if there is no other available pod, the vSwitch causes a pod represented as Pod1 to be generated. The client session is processed by this pod.
[0051] 2.5 HTTP Service Mesh Example
[0052] Figure 4BAn implementation example involving an HTTP request in a service mesh architecture is shown. At step (1), the client computing device 120 sends a SYN packet that identifies the client address, client port number, service address, and service port number. The request travels through the cloud network 100 using the process described previously for Figure 2 , Figure 3 to reach the virtual switch (vSwitch) at Node1, which is a computing node. In response, if there is no other available pod, the vSwitch causes a pod represented as Pod1 to be generated. The client session is processed by this pod. Additionally, in response to the initiation of the session, an ingress proxy 402 is created at any suitable location in the cloud network 100. The ingress proxy 402 then proxies subsequent client packets or requests to Pod1.
[0053] 2.6 Creating the Network for the Workload
[0054] The techniques described so far have specified that a client network session can directly trigger the local creation of a workload for processing that session. Additionally or alternatively, similar techniques can also be used for client network sessions to trigger the local creation of a workload network in a hierarchical or cascaded manner. For example, a first workload instantiated in response to client-server traffic in the previously described manner can send a second session initiation packet that triggers the creation of a second workload for processing a second session. The second workload can be on the same server or on a different server from the first workload.
[0055] Using this method, the process of Figure 3 can be supplemented with the following instructions that cause: in response to receiving a second packet associated with initiating a second client-server session from a workload, selecting a second selected server from among a plurality of available geographically or logically distributed servers in the network edge computing nodes to process the second client-server session; sending a request to the second selected server to create a second workload for processing the second client-server session; and forwarding one or more other packets associated with the same second client-server session to the second selected server.
[0056] Alternatively, the process of Figure 3In the process, these instructions cause: in response to receiving a second packet associated with initiating a second client-server session from a workload, sending a second workload request to a workload orchestrator; the workload orchestrator selecting a second selected server from among a plurality of available geographically or logically distributed servers in a network edge computing node to process the second client-server session; the workload orchestrator sending a request to the second selected server to create a second workload for processing the second client-server session; receiving data identifying the second selected server from the workload orchestrator; and forwarding one or more other packets associated with the same second client-server session to the second selected server.
[0057] 3. Implementation Example - Hardware Overview
[0058] According to one embodiment, the techniques described herein are implemented by at least one computing device. These techniques can be implemented in whole or in part using a combination of at least one server computer and / or other computing devices coupled using a network such as a packet data network. The computing device can be hardwired to perform these techniques, or can include digital electronic devices such as at least one application specific integrated circuit (ASIC) or field programmable gate array (FPGA) that are permanently programmed to perform these techniques, or can include at least one general purpose hardware processor programmed to perform these techniques according to program instructions in firmware, memory, other storage, or a combination. Such a computing device can also combine custom hardwired logic, ASIC, or FPGA with custom programming to implement the described techniques. The computing device can be a server computer, a workstation, a personal computer, a portable computer system, a handheld device, a mobile computing device, a wearable device, a body-mounted device or an implantable device, a smart phone, a smart appliance, a network-interconnecting device, an autonomous or semi-autonomous device such as a robot or an unmanned ground vehicle or aircraft, any other electronic device incorporating hardwired and / or program logic for implementing the described techniques, one or more virtual computer machines or instances in a data center, and / or a network of server computers and / or personal computers.
[0059] Figure 5 is a block diagram showing an example computer system that can be utilized to implement an embodiment. In Figure 5 the example, at the same level of detail used by those of ordinary skill in the art to which the present disclosure pertains to convey computer architecture and computer system implementation, the computer system 500 and the instructions for implementing the disclosed techniques in hardware, software, or a combination of hardware and software are schematically represented as, for example, boxes and circles.
[0060] The computer system 500 includes an input / output (I / O) subsystem 502, which may include a bus and / or one or more other communication mechanisms for transferring information and / or instructions between components of the computer system 500 via an electronic signal path. The I / O subsystem 502 may include an I / O controller, a memory controller, and at least one I / O port. The electronic signal path is schematically represented in the drawings as, for example, lines, unidirectional arrows, or bidirectional arrows.
[0061] At least one hardware processor 504 is coupled to the I / O subsystem 502 for processing information and instructions. The hardware processor 504 may include, for example, a general-purpose microprocessor or microcontroller and / or a special-purpose microprocessor, such as an embedded system or a graphics processing unit (GPU) or a digital signal processor or an ARM processor. The processor 504 may include an integrated arithmetic logic unit (ALU), or may be coupled to a separate ALU.
[0062] The computer system 500 includes one or more units of memory 506, such as main memory, which is coupled to the I / O subsystem 502 for electrically and digitally storing data and instructions to be executed by the processor 504. The memory 506 may include volatile memory, such as various forms of random access memory (RAM) or other dynamic storage devices. The memory 506 may also be used to store temporary variables or other intermediate information during the execution of instructions to be executed by the processor 504. Such instructions, when stored in a non-transitory computer-readable storage medium accessible by the processor 504, may cause the computer system 500 to become a special-purpose machine customized to perform the operations specified in these instructions.
[0063] The computer system 500 also includes non-volatile memory, such as read-only memory (ROM) 508 or other static storage devices coupled to the I / O subsystem 502 for storing information and instructions for the processor 504. The ROM 508 may include various forms of programmable ROM (PROM), such as erasable PROM (EPROM) or electrically erasable PROM (EEPROM). Units of a permanent storage device 510 may include various forms of non-volatile RAM (NVRAM), such as flash memory or solid-state storage devices, magnetic disks, or optical disks (such as CD-ROM or DVD-ROM), and may be coupled to the I / O subsystem 502 for storing information and instructions. The storage device 510 is an example of a non-transitory computer-readable medium that can be used to store instructions and data that, when executed by the processor 504, cause the execution of a computer-implemented method to perform the techniques herein.
[0064] Instructions in the memory 506, ROM 508, or storage device 510 may include one or more sets of instructions that are organized as modules, methods, objects, functions, routines, or calls. The instructions may be organized as one or more computer programs, operating system services, or application programs including mobile applications. The instructions may include: an operating system and / or system software; one or more libraries for supporting multimedia, programming, or other functions; data protocol instructions or stacks for implementing TCP / IP, HTTP, or other communication protocols; file format processing instructions for parsing or rendering files encoded using HTML, XML, JPEG, MPEG, or PNG; user interface instructions for rendering or interpreting commands for a graphical user interface (GUI), command line interface, or text user interface; application software such as an office suite, Internet access applications, design and manufacturing applications, graphics applications, audio applications, software engineering applications, educational applications, games, or miscellaneous applications. The instructions may implement a web server, web application server, or web client. The instructions may be organized as a presentation layer, application layer, and data storage layer, such as a relational database system using or not using structured query language (SQL), object storage, graph database, flat file system, or other data storage.
[0065] The computer system 500 may be coupled to at least one output device 512 via the I / O subsystem 502. In one embodiment, the output device 512 is a digital computer display. Examples of displays that may be used in various embodiments include touchscreen displays, light-emitting diode (LED) displays, liquid crystal displays (LCD), or electronic paper displays. Alternatively or in addition to the display device, the computer system 500 may include one or more other types of output devices 512. Examples of other output devices 512 include printers, ticket printers, plotters, projectors, sound cards or video cards, speakers, buzzers, or piezoelectric devices or other audible devices, lights, or LED or LCD indicators, haptic devices, actuators, or servos.
[0066] At least one input device 514 is coupled to the I / O subsystem 502 for transmitting signals, data, command selections, or gestures to the processor 504. Examples of the input device 514 include touchscreens, microphones, still and video digital cameras, alphanumeric and other keys, keypads, keyboards, graphics tablets, image scanners, joysticks, clocks, switches, buttons, dials, sliders, and / or various types of sensors such as force sensors, motion sensors, thermal sensors, accelerometers, gyroscopes, and inertial measurement unit (IMU) sensors and / or various types of transceivers such as wireless (such as cellular or Wi-Fi), radio frequency (RF), or infrared (IR) transceivers and global positioning system (GPS) transceivers.
[0067] Another type of input device is the control device 516. Alternatively or in addition to the input function, the control device 516 can perform cursor control or other automatic control functions, such as navigation in a graphical interface on a display screen. The control device 516 can be a touchpad, mouse, trackball, or cursor direction keys for transmitting direction information and command selections to the processor 504 and for controlling the cursor movement on the display 512. The input device can have at least two degrees of freedom on two axes (a first axis (e.g., x) and a second axis (e.g., y)), which allows the device to specify a position in a plane. Another type of input device is a wired, wireless, or optical control device, such as a joystick, wand, console, steering wheel, pedal, shift mechanism, or other types of control devices. The input device 514 can include a combination of multiple different input devices, such as cameras and depth sensors.
[0068] In another embodiment, the computer system 500 can include Internet of Things (IoT) devices, where one or more of the output device 512, the input device 514, and the control device 516 are omitted. Alternatively, in such an embodiment, the input device 514 can include one or more cameras, motion detectors, thermometers, microphones, seismic detectors, other sensors or detectors, measurement devices, or encoders, and the output device 512 can include a dedicated display such as a single-line LED or LCD display, one or more indicators, display panels, meters, valves, solenoids, actuators, or servos.
[0069] When the computer system 500 is a mobile computing device, the input device 514 can include a Global Positioning System (GPS) receiver coupled to a GPS module that is capable of triangulating multiple GPS satellites to determine and generate geographical location or position data, such as latitude-longitude values of the geophysical location of the computer system 500. The output device 512 can include hardware, software, firmware, and interfaces for generating location report packets, notifications, pulses, or heartbeat signals, or other periodic data transmissions that individually specify the location of the computer system 500 or that specify the location of the computer system 500 in combination with other application-specific data for the host 524 or the server 530.
[0070] The computer system 500 can implement the techniques described herein using custom hardwired logic, at least one ASIC or FPGA, firmware, and / or program instructions or logic that, when loaded and used or executed in conjunction with the computer system, cause the computer system to operate as a special-purpose machine or program the computer system to operate as a special-purpose machine. According to one embodiment, the computer system 500 performs the techniques described herein in response to the processor 504 executing at least one sequence of at least one instruction included in the main memory 506. Such instructions can be read into the main memory 506 from another storage medium such as the storage device 510. Executing the instruction sequence included in the main memory 506 causes the processor 504 to perform the processing steps described herein. In an alternative embodiment, hardwired circuitry may be used in place of or in combination with software instructions.
[0071] As used herein, the term "storage medium" refers to any non-transitory medium that stores data and / or instructions that cause a machine to operate in a particular manner. Such storage media may include non-volatile media and / or volatile media. Non-volatile media includes, for example, optical or magnetic disks, such as the storage device 510. Volatile media includes dynamic memory, such as the memory 506. Common forms of storage media include, for example, hard disks, solid state drives, flash drives, magnetic data storage media, any optical or physical data storage media, memory chips, or the like.
[0072] A storage medium is different from a transmission medium but may be used in conjunction with a transmission medium. A transmission medium participates in transferring information between storage media. For example, a transmission medium includes coaxial cables, copper wire, and fiber optics, including the wires that make up the bus of the I / O subsystem 502. A transmission medium can also take the form of acoustic or light waves, such as those generated during radio wave and infrared data communications.
[0073] Various forms of media may participate in delivering at least one sequence of at least one instruction to the processor 504 for execution. For example, the instructions may initially be carried on a magnetic disk or solid state drive of a remote computer. The remote computer may load the instructions into its dynamic memory and send the instructions using a modem over a communication link such as a fiber optic cable or coaxial cable or telephone line. A modem or router local to the computer system 500 may receive the data on the communication link and convert the data into a format that the computer system 500 can read. For example, a receiver such as a radio frequency antenna or an infrared detector may receive data carried in a wireless or optical signal, and appropriate circuitry may provide the data to the I / O subsystem 502, such as placing the data on a bus. The I / O subsystem 502 transfers the data to the memory 506, and the processor 504 retrieves and executes the instructions from the memory 506. The instructions received by the memory 506 may optionally be stored on the storage device 510 before or after being executed by the processor 504.
[0074] The computer system 500 also includes a communication interface 518 coupled to the bus 502. The communication interface 518 provides a two-way data communication coupling to one or more network links 520 that are directly or indirectly connected to at least one communication network, such as a public or private cloud on the network 522 or the Internet. For example, the communication interface 518 may be an Ethernet networking interface, an integrated services digital network (ISDN) card, a cable modem, a satellite modem, or a modem for providing a data communication connection to a corresponding type of communication line (such as an Ethernet cable or any kind of metallic cable or fiber optic cable or telephone line). The network 522 broadly represents a local area network (LAN), a wide area network (WAN), a campus network, the Internet, or any combination thereof. The communication interface 518 may include: a LAN card for providing a data communication connection to a compatible LAN; or a cellular wireless telephone interface that is wired to send or receive cellular data according to cellular wireless telephone wireless networking standards; or a satellite radio interface that is wired to send or receive digital data according to satellite wireless networking standards. In any such implementation, the communication interface 518 sends and receives electrical, electromagnetic, or optical signals over signal paths that carry digital data streams representing various types of information.
[0075] The network link 520 generally uses, for example, satellite, cellular, Wi-Fi, or Bluetooth technology to provide electrical, electromagnetic, or optical data communication directly or through at least one network to other data devices. For example, the network link 520 may provide a connection to a host computer 524 through the network 522.
[0076] Additionally, network link 520 can provide a connection over network 522 or to other computing devices through network interconnection devices and / or computers operated by an Internet Service Provider (ISP) 526. The ISP 526 provides data communication services through a global packet data communication network represented as the Internet 528. Server computer 530 can be coupled to the Internet 528. Server 530 broadly represents any computer, data center, virtual machine or virtual computing instance with or without a hypervisor, or a computer that executes a containerized program system such as DOCKER or KUBERNETES. Server 530 can represent an electronic digital service that is implemented using more than one computer or instance and is accessed and used by sending web service requests, Uniform Resource Locator (URL) strings with parameters in an HTTP payload, API calls, application service calls, or other service calls. Computer system 500 and server 530 can form elements of a distributed computing system that includes other computers, processing clusters, server farms, or other computer organizations that cooperate to execute tasks or execute applications or services. Server 530 can include one or more sets of instructions that are organized as modules, methods, objects, functions, routines, or calls. The instructions can be organized as one or more computer programs, operating system services, or application programs including mobile applications. The instructions can include: an operating system and / or system software; one or more libraries for supporting multimedia, programming, or other functions; data protocol instructions or stacks for implementing TCP / IP, HTTP, or other communication protocols; file format processing instructions for parsing or presenting files encoded using HTML, XML, JPEG, MPEG, or PNG; user interface instructions for presenting or interpreting commands for a graphical user interface (GUI), command line interface, or text user interface; application software such as an office suite, Internet access applications, design and manufacturing applications, graphics applications, audio applications, software engineering applications, educational applications, games, or miscellaneous applications. Server 530 can include a web application server that hosts a presentation layer, an application layer, and a data storage layer, such as a relational database system using Structured Query Language (SQL) or not using SQL, object storage, a graph database, a flat file system, or other data storage.
[0077] The computer system 500 can send messages and receive data and instructions, including program code, via one or more networks, network links 520, and communication interface 518. In an Internet example, server 530 can send request code for an application program via Internet 528, ISP 526, local network 522, and communication interface 518. The received code can be executed by processor 504 when it is received, and / or stored in storage device 510 or other non-volatile storage devices for later execution.
[0078] The execution of instructions as described in this section can be implemented as a process in the form of an instance of a computer program that is executing and consists of the program code and its current activities. Depending on the operating system (OS), a process may consist of multiple execution threads that execute instructions concurrently. In this context, a computer program is a passive collection of instructions, while a process can be the actual execution of those instructions. Multiple processes may be associated with the same program; for example, opening multiple instances of the same program often means that more than one process is executing. Multitasking can be implemented to allow multiple processes to share processor 504. Although each processor 504 or core of a processor executes a single task at a time, computer system 500 can be programmed to implement multitasking to allow each processor to switch between the tasks being executed without having to wait for each task to complete. In one embodiment, the switch can be performed when a task is performing an input / output operation, when the task indicates that it can be switched, or upon a hardware interrupt. Time-sharing can be implemented to allow for a quick response to interactive user applications by performing rapid context switches to provide the appearance of concurrent execution of multiple processes. In one embodiment, for security and reliability, the operating system can prevent direct communication between independent processes, thus providing a strictly mediated and controlled inter-process communication function.
[0079] 4. Benefits of Various Embodiments
[0080] Compared with past methods, the described embodiments provide many technical benefits. For example, localizing the network element that detects a session and generates a workload at the edge computing node allows the presence of a client session to indicate, in a highly distributed, scalable, and efficient manner, where and when to place the workload. Thus, the disclosed method can reduce the use of computing resources, storage devices, memory, and network bandwidth by placing the workload at the network edge node that is logically or physically closest to the client computing device that needs to be served, and because there is no need to start or instantiate virtual server instances to serve an assumed or expected level of client load that never materializes. Given the current high cost of temporarily using virtual computing instances and storage in public cloud computing services, reducing the number of virtual server instances created will also reduce the cost for an enterprise to implement the service.
Claims
1. A method, comprising: receiving, at a network element, packets associated with initiating a client-server session from a client computer; in response to receiving the packets associated with initiating the client-server session, sending a workload request from the network element to a workload orchestrator; the workload orchestrator selecting a selected server from among a plurality of available geographically or logically distributed servers in a network edge computing node to process the client-server session; the workload orchestrator sending a request to the selected server to create a workload to process the client-server session; receiving, at the network element, data identifying the selected server from the workload orchestrator; reprogramming a forwarding table of the network element such that all subsequent packets received at the network element from the client computer and associated with the same client-server session are forwarded to the selected server, causing subsequent packets to bypass the workload orchestrator; and forwarding one or more other packets received from the client computer and associated with the same client-server session from the network element to the selected server, causing the one or more other packets to bypass the workload orchestrator.
2. The method according to claim 1, further comprising: performing one of the following operations: receiving packets associated with completing the same client-server session, determining that a specified time has elapsed after sending a request to create a workload to the selected server, or determining that a specified idle period has elapsed after sending a request to create a workload to the selected server and the selected server is idle during the idle period; and, in response thereto, sending a workload termination request to the workload orchestrator, and the workload orchestrator instructing the selected server to terminate.
3. The method according to claim 1 or 2, further comprising: the workload orchestrator selecting a selected server from among a plurality of available geographically or logically distributed servers to process the client-server session by selecting a particular server that is logically closest to a client computing device that sends packets associated with initiating the client-server session.
4. The method according to claim 1, further comprising: the workload orchestrator selecting a selected server from among a plurality of available geographically or logically distributed servers to process the client-server session by selecting a particular server that is physically or geographically closest to a client computing device that sends packets associated with initiating the client-server session.
5. In the method according to claim 1, the workload orchestrator, the selected server, and the plurality of geographically or logically distributed servers are located in a common cloud computing environment.
6. In the method according to claim 5, the selected server is a virtual computing instance in the common cloud computing environment.
7. The method according to claim 5 or 6, wherein the packet is a Transmission Control Protocol (TCP) SYN packet, and the selected server is a virtual computing instance in a public cloud computing environment virtualized using Kubernetes containers.
8. The method according to claim 5 or 6, wherein the packet is a Transmission Control Protocol (TCP) SYN packet having an HTTP request in the payload, and the selected server is a virtual computing instance in a public cloud computing environment implementing microservices in a service mesh architecture.
9. The method according to claim 1, further comprising: responding to receiving a second packet associated with initiating a second client-server session from the workload, sending a second workload request to the workload orchestrator; the workload orchestrator selecting a second selected server from among a plurality of available geographically or logically distributed servers in a network edge computing node to handle the second client-server session; the workload orchestrator sending a request to the second selected server to create a second workload to handle the second client-server session; receiving data identifying the second selected server from the workload orchestrator; forwarding one or more other packets associated with the same second client-server session to the second selected server.
10. A system, comprising: means for receiving, at a network element, a packet associated with initiating a client-server session from a client computer; means for sending, in response to receiving the packet associated with initiating the client-server session, a workload request from the network element to a workload orchestrator; means for selecting, at the workload orchestrator, a selected server from among a plurality of available geographically or logically distributed servers in a network edge computing node to handle the client-server session; means for sending, from the workload orchestrator to the selected server, a request to create a workload to handle the client-server session; means for receiving, at the network element, data identifying the selected server from the workload orchestrator; means for performing the following operation: reprogramming the forwarding table of the network element such that all subsequent packets received at the network element from the client computer and associated with the same client-server session are forwarded to the selected server, such that subsequent packets bypass the workload orchestrator; and means for forwarding, from the network element, one or more other packets received from the client computer and associated with the same client-server session to the selected server, such that the one or more other packets bypass the workload orchestrator.
11. The system according to claim 10, further comprising means for implementing the method according to any one of claims 2 to 9.
Citation Information
Patent Citations
Service virtualization over content-centric networks
EP2416542A1