Patent Description:
One technical field of the present disclosure is configuration of virtualized containers in computer networks. Another technical field is management of internetworking devices. Yet another technical field is workload management in virtual computing systems.

Virtual computing systems, cloud computing services and cloud networks can be deployed using large numbers of internetworking devices and computing instances. Consequently, a computer that is executing an application program for a particular end user could be physically or logically located in a distant location in relation to the end user's computer, resulting in noticeable latency in machine response. A typical goal of network architects is to locate application programs at network devices that are closest to the end user, such as in computing devices located physically or logically at the edge of the network. Each edge node may comprise a site or cluster of multiple computing devices, and all edge nodes may be federated, but available CPU resources in edge nodes may be scarce due to high demand from among all applications or services. Therefore, placing execution workloads in the edge compute context should be placed as close as possible to the user machine only when there is a user machine to take advantage of them. The same issue arises in determining placement of micro-services. <CIT> discloses a system for facilitating network service virtualisation including a proxy server that broadcasts content-centric network interests to establish a session between a server and a client.

The appended claims may serve as a summary of the invention.

Embodiments are described in sections according to the following outline:.

The technical problem(s) outlined in the Background are solved using programmed computing devices arranged and configuration to operate as follows, in one embodiment. An application author specifies a policy about the desired location of workload execution for specified kinds of client requests. A client sends a packet which initiates a session or task that is suitable for mapping to a workload, and the packet is received at a first network element that is configured to forward the packet to a workload orchestrator. In response to receiving the packet, the workload orchestrator selects a computing device or other network element, which is located as close as possible to location specified in the policy, to run the workload. The selected network element launches a workload to consume the session, possibly by signaling a workload orchestration system to launch a workload locally. Thereafter, the first network element forwards all traffic of the session to the workload at the computing device. The network element may store and forward session traffic while waiting for the workload to be available.

In an embodiment, workloads can be terminated in response to one or more pre-defined conditions or a combination of conditions. For example, a workload may be terminated after its session(s) are concluded, or after a set period after the workload is started, or after a set period of idle time. Each workload termination can be initiated by the workload itself, thus causing self-termination, or by the workload orchestrator.

In one embodiment, a method comprises, in response to receiving a packet that is associated with initiating a client-server session, transmitting a workload request to a workload orchestrator; the workload orchestrator selecting a selected server, from among a plurality of available geographically or logically distributed servers in network edge computing nodes, to process the client-server session; the workload orchestrator transmitting a request to the selected server to create a workload to process the client-server session; receiving, from the workload orchestrator, data identifying the selected server; 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.

In another example, a method executed in a network infrastructure element of a network edge computing node comprises, in response to receiving a packet that is associated with initiating a client-server session, 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; transmitting 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.

Various examples may use different techniques to initiate a workload based on a client network session. In one approach, termed strict triggering, a client network session can directly trigger the local creation of a network of workloads; while this approach is expected to offer lower latency, it may also be less efficient, as a workload network may be sparsely used. In another approach, termed lazy triggering, a client network session can, in a cascading fashion, trigger local creation of a network of workloads. For example, a first workload could send a session initiating packet to a second workload, thus causing the second workload to be spawned. This approach is expected to yield higher latency, but to be more efficient, as workloads in the network are only spawned as needed. With these techniques, localizing the network element that detects sessions and that spawns workloads at edge network devices allows client sessions to direct where and when workloads are placed, in a highly distributed, scalable, and efficient manner.

Systems and apparatus for implementing the methods described herein, including network nodes, computer programs, computer program products, computer readable media and logic encoded on tangible media for implementing the methods are also described.

<FIG> illustrates an example networked, distributed computer system in which an embodiment could be implemented. For purposes of illustrating a clear example, <FIG> shows a limited number of functional elements, but practical embodiments may use any number of such elements.

In the example of <FIG>, a network cloud <NUM> comprises a plurality of compute nodes <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM> that are logically and/or geographically distributed across the cloud, including some compute nodes that are logically and/or physically close to a client computing device <NUM> and other compute nodes that are distant or remote. The compute nodes <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM> may be communicatively coupled via links represented in <FIG> as arrows; different connectivity topologies may be used including partial mesh, full mesh or other.

Network cloud <NUM> further comprises a workload orchestrator <NUM>, which may be implemented as an independent computer or virtual computing instance, or as a process, daemon or agent executing in a router, switch, other internetworking element, or other computer in the cloud. Workload orchestrator <NUM> may or may not reside on an internetworking element. Orchestration may be implemented using a round-robin approach, a consistent hash that is locally calculated, a random value selection or other approaches that do not require transmitting a request off of an internetworking device to determine where to place a workload. Example functions of workload orchestrator <NUM> are described in other sections herein.

Each of the compute nodes <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM> comprises at least one network element <NUM>, as shown in <FIG> for node <NUM> as an example. The network element <NUM> may comprise a router, switch, firewall, gateway or other internetworking element that is programmed to receive packets or flows from the client computing device <NUM> and forward, route, classify or process packets or flows including selectively forwarding to other compute nodes and/or the workload orchestrator <NUM> depending on attributes of the packets or flows. In an example, each of the compute nodes <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM> further comprises zero or more servers <NUM>, each of which may be implemented as a computer, process, micro-service, or virtual computing instance with or without the use of virtualized containerization. At least one of the compute nodes <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM> in cloud <NUM> has at least one server <NUM>. Each server <NUM> in the cloud <NUM> is programmed to implement an application, service and/or microservice, including receiving requests from client computing device <NUM>, performing data processing services, transformations or calculations and responding to the requests.

Network cloud <NUM> also may have connections to external elements <NUM>, <NUM> such as computers, networks, management or analysis systems. Examples include third-party web services that support the services that are provided by server <NUM> to client computing device <NUM>.

<FIG> illustrates an example data processing flow among elements of <FIG>, in one embodiment. For purposes of illustrating a clear example, <FIG> shows only client computing device <NUM>, workload orchestrator <NUM>, network element <NUM> and server <NUM>. <FIG> illustrates an example processing flow that can be programmed to implement an embodiment. For purposes of illustrating a clear example, <FIG> will be described in connection with the structure and data flow of <FIG>.

<FIG> and each other flow diagram herein illustrates an algorithm or plan that may be used as a basis for programming one or more of the functional modules of <FIG>, <FIG> that relate to the functions that are illustrated in the diagram, using a programming development environment or programming language that is deemed suitable for the task. Thus, <FIG> and each other flow diagram herein are intended as an illustration at the functional level at which skilled persons, in the art to which this disclosure pertains, communicate with one another to describe and implement algorithms using programming. The flow diagrams are not intended to illustrate every instruction, method object or sub step that would be needed to program every aspect of a working program, but are provided at the high, functional level of illustration that is normally used at the high level of skill in this art to communicate the basis of developing working programs.

Referring first to <FIG>, in one embodiment, a processing flow <NUM> may be programmed in a network element and workload orchestrator first to perform receiving a packet from a client computer at the network element, as seen at block <NUM>. In an embodiment, at step (<NUM>) of <FIG>, the client computing device <NUM> transmits a digital data packet to network element <NUM> that contains protocol identifiers, request identifiers, payload data or other values that signal network element to initiate a session in relation to a service or application that is provided in network cloud <NUM>. "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 network element <NUM>. Initiating a session may occur via packets that include a parameterized URL carried via HTTP, a request in another protocol signified by a request identifier, or other data sufficient to inform an appropriately programmed network element that a session is initiated. "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 could be involved for different services or applications.

At block <NUM>, process <NUM> transmits 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 (<NUM>) of <FIG>, network element <NUM> is programmed to transmit a workload request to workload orchestrator <NUM>. The workload request may be defined in a special-purpose protocol or may be carried in a URL via HTTP. The effect of a workload request is to request the workload orchestrator <NUM> to create or instantiate an executing process or workload <NUM> in a server <NUM> that is capable of servicing the session. A workload request may include a copy of all or part of the packet that was received at network element <NUM> to initiate a session, but is not required to include the packet.

At block <NUM>, using the workload orchestrator, the process <NUM> selects a server instance that is available, closest and/or best for processing a session with the client computer. For example, at step (<NUM>) of <FIG>, workload orchestrator <NUM> selects one particular server <NUM> from among a plurality of different servers in different locations. As the description of <FIG> has indicated, nodes <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM> may be distributed around network cloud <NUM> and may be distant from client computing device <NUM>. Therefore, workload orchestrator <NUM> is programmed with instructions to select a particular node that is closest to client computing device <NUM>, either logically or physically, and best for use. Proximity may be determined by inspecting metadata such as the source network address of client computing device <NUM> and selecting from a digitally stored mapping table that maps ranges of client addresses to corresponding addresses or identifiers of the nodes <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>. Or, proximity may be determined by inspecting a source address of the network element <NUM> that forwarded the workload request to the workload orchestrator <NUM> and using a similar mapping table. Using a mapping table is not required and the workload orchestrator may be programmed to use rules or other logic to select a node.

The best node <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM> that the workload orchestrator <NUM> selects is not required to be the physically or logically closest node. Instead, workload orchestrator <NUM> may be programmed to inspect values of metrics such as CPU load, storage usage, memory availability, or number of sessions, and to modify a selection of the node <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM> based on those values. For example, workload orchestrator <NUM> may be programmed to calculate a list of the top N nodes that are logically or physically closest to the client computing device <NUM>, and then use values of the metrics to move down the list to reach a final selection. Threshold crossing, weighted blending, or other algorithmic approaches may be used to inspect values of the metrics to reach a final selection. Or, each node <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM> in the list may be scored using a weighted blending of metric values, and the node having the top score may be selected.

When a server instance has been selected, at block <NUM> of <FIG>, the process transmits 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 <NUM> is programmed to spawn a workload <NUM> on a server <NUM> as indicated by step (<NUM>) of <FIG>. "Workload," in this context, refers to an instance of a service, an instance of an application, a process, agent or daemon that is programmed or configured to service the session that client computing device <NUM> has initiated.

Optionally, at block <NUM>, the process waits for an acknowledgment from the selected server instance indicating that the workload was created and is running; in some examples, if no acknowledgment is received, then the selection step of block <NUM> is performed again to result in selecting a different The workload orchestrator can transmit a single packet to the server to cause the server to begin to spin up a workload, such that after completion of a TCP or HTTP session characterized by multiple roundtrips, the workload is ready and available. This approach may prevent the workload orchestrator from becoming a bottleneck in the system.

At block <NUM>, the process transmits data identifying the selected server instance to the network element. Block <NUM> involves reprogramming forwarding tables of the network element to cause all later packets for the same session, which are received at the network element from the client computing device, to be forwarded to the selected server instance, as seen at block <NUM>. Thus, for packets other than the session initiation packet, the workload orchestrator <NUM> is bypassed and packets are forwarded from the network element <NUM> toward the server <NUM>.

To implement the foregoing functions, the network element <NUM> such as a router or switch may be programmed with a daemon, agent or service, configured as an application or as a unit of an operating system, and having instructions effective to perform the specified functions. Similarly, workload orchestrator <NUM> may be programmed with instructions that are configured to perform the functions that have been described for it. In some embodiments, workload orchestrator <NUM> may be integrated with a network element <NUM> and the functions of workload orchestration described herein may form a part of the operating system or system services of the network element.

A fully recursive approach may be programmed, in which a packet arrives at a node, a single packet trigger is sent to another node, work is performed on the current node until a condition occurs that causes it to need to move off the node, and a single packet trigger is sent to the other node, thus recursively invoking the process. The foregoing approach may be implemented as a modified dynamic service function chain in which chain links are dynamic, functions instantiations are dynamic and created on the fly, the decision to move to a new node in the chain is based on environmental factors of the compute infrastructure such as running out of memory or too many threads rather than prescribed in advance, and a workload instantiation is primed with the single trigger packet so that the workload has already spun up, possibly with workload state passed in the trigger packet, before the handshake for the workload data connection has completed. A local decision of which node to process next may be complex, or simple. For example, a workload may determine to process an entire request, or pass it on at any time, provided that executing a pass occurs at an instant that the workload could recover from in terms of local state. The smallest amount of workload processing is <NUM>, meaning that the workload simply is passed to another node.

The process <NUM> optionally may include steps for tearing down or terminating a workload when a client-server session is complete. In some implementations, server-side code for a particular micro-service, application or server instance may implement instructions that detect when a client-server session, transaction or response is complete, and may automatically tear down or terminate a session or server instance in response. At block <NUM>, the network element may receive a server response or packet from the client computer that is associated with completing the session. That is, in certain protocols or request-response sessions, there may be packets that carry protocol identifiers, protocol values, or other data in headers or payloads that signal an end of a session. In response to detecting such a value, at block <NUM>, the process transmits a workload termination request to the workload orchestrator <NUM>. At block <NUM>, using the workload orchestrator, the selected server instance is instructed to terminate.

Thus, a workload may be terminated after its sessions are concluded. Additionally or alternatively, process <NUM> may implement active timeout in which a workload is terminated at a set time after it is started. Additionally or alternatively, process <NUM> may implement idle timeout in which a workload is terminated a set period after it is idle. The specific workload termination technique can be specified by the workload, by the workload orchestrator, or via configuration data. In one embodiment, the process <NUM> further comprises executing one of: receiving a packet that is associated with completing the same client-server session, determining that a specified time has passed after transmitting the request to the selected server to create the workload, or determining that a specified idle time period has passed after transmitting the request to the selected server to create the workload and during which the selected server has been idle; and in response thereto, transmitting a workload termination request to the workload orchestrator, and the workload orchestrator instructing the selected server to terminate.

Or, the process <NUM> further comprises executing one of: receiving a packet that is associated with completing the same client-server session, determining that a specified time has passed after transmitting the request to the selected server to create the workload, or determining that a specified idle time period has passed after transmitting the request to the selected server to create the workload and during which the selected server has been idle; and in response thereto, instructing the selected server to terminate.

<FIG> illustrates an implementation example involving a TCP session using Kubernetes container virtualization. At step (<NUM>), client computing device <NUM> transmits a SYN packet that identifies a client address, client port number, service address and service port number. The request transits cloud network <NUM> using the processes previously described for <FIG>, <FIG> to reach a virtual switch (vSwitch) at Node1, which is a computing node. In response, the vSwitch causes spawning a pod denoted Pod1 if another available pod does not exist. The client session is processed by the pod.

<FIG> illustrates an implementation example involving an HTTP request in a service mesh architecture. At step (<NUM>), client computing device <NUM> transmits a SYN packet that identifies a client address, client port number, service address and service port number. The request transits cloud network <NUM> using the processes previously described for <FIG>, <FIG> to reach a virtual switch (vSwitch) at Node1, which is a computing node. In response, the vSwitch causes spawning a pod denoted Pod1 if another available pod does not exist. The client session is processed by the pod. Furthermore, in response to initiation of a session, an ingress proxy <NUM> is created at any suitable location in cloud network <NUM>. The ingress proxy <NUM> then proxies subsequent client packets or requests to Pod1.

The techniques described thus far have specified that a client network session can trigger directly the local creation of a workload for processing the session. Additionally or alternatively, similar techniques also may be used for a client network session to trigger local creation of a network of workloads in hierarchical or cascading manner. For example, a first workload, which has been instantiated in response to client-server traffic in the manner previously described, can transmit a second session initiation packet which triggers the creation of a second workload to process the second session. The second workload may be on the same server or a different server than the first workload.

With this approach, the process of <FIG> may be supplemented with instructions that cause, in response to receiving a second packet from the workload that is associated with initiating a second client-server session, selecting a second selected server, from among a plurality of available geographically or logically distributed servers in network edge computing nodes, to process the second client-server session; transmitting a request to the second selected server to create a second workload to process the second client-server session; forwarding one or more other packets associated with the same second client-server session to the second selected server.

Or, the process of <FIG> may be supplemented with instructions that cause, in response to receiving a second packet from the workload that is associated with initiating a second client-server session, transmitting 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 network edge computing nodes, to process the second client-server session; the workload orchestrator transmitting a request to the second selected server to create a second workload to process the second client-server session; receiving, from the workload orchestrator, data identifying the second selected server; forwarding one or more other packets associated with the same second client-server session to the second selected server.

The techniques described herein are implemented by at least one computing device. The techniques may be implemented in whole or in part using a combination of at least one server computer and/or other computing devices that are coupled using a network, such as a packet data network. The computing devices may be hard-wired to perform the techniques, or may include digital electronic devices such as at least one application-specific integrated circuit (ASIC) or field programmable gate array (FPGA) that is persistently programmed to perform the techniques, or may include at least one general purpose hardware processor programmed to perform the techniques pursuant to program instructions in firmware, memory, other storage, or a combination. Such computing devices may also combine custom hard-wired logic, ASICs, or FPGAs with custom programming to accomplish the described techniques. The computing devices may be server computers, workstations, personal computers, portable computer systems, handheld devices, mobile computing devices, wearable devices, body mounted or implantable devices, smartphones, smart appliances, internetworking devices, autonomous or semi-autonomous devices such as robots or unmanned ground or aerial vehicles, any other electronic device that incorporates hard-wired and/or program logic to implement the described techniques, one or more virtual computing machines or instances in a data center, and/or a network of server computers and/or personal computers.

<FIG> is a block diagram that illustrates an example computer system with which an embodiment may be implemented. In the example of <FIG>, a computer system <NUM> and instructions for implementing the disclosed technologies in hardware, software, or a combination of hardware and software, are represented schematically, for example as boxes and circles, at the same level of detail that is commonly used by persons of ordinary skill in the art to which this disclosure pertains for communicating about computer architecture and computer systems implementations.

Computer system <NUM> includes an input/output (I/O) subsystem <NUM> which may include a bus and/or other communication mechanism(s) for communicating information and/or instructions between the components of the computer system <NUM> over electronic signal paths. The I/O subsystem <NUM> may include an I/O controller, a memory controller and at least one I/O port. The electronic signal paths are represented schematically in the drawings, for example as lines, unidirectional arrows, or bidirectional arrows.

At least one hardware processor <NUM> is coupled to I/O subsystem <NUM> for processing information and instructions. Hardware processor <NUM> 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 ARM processor. Processor <NUM> may comprise an integrated arithmetic logic unit (ALU) or may be coupled to a separate ALU.

Computer system <NUM> includes one or more units of memory <NUM>, such as a main memory, which is coupled to I/O subsystem <NUM> for electronically digitally storing data and instructions to be executed by processor <NUM>. Memory <NUM> may include volatile memory such as various forms of random-access memory (RAM) or other dynamic storage device. Memory <NUM> also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor <NUM>. Such instructions, when stored in non-transitory computer-readable storage media accessible to processor <NUM>, can render computer system <NUM> into a special-purpose machine that is customized to perform the operations specified in the instructions.

Computer system <NUM> further includes non-volatile memory such as read only memory (ROM) <NUM> or other static storage device coupled to I/O subsystem <NUM> for storing information and instructions for processor <NUM>. The ROM <NUM> may include various forms of programmable ROM (PROM) such as erasable PROM (EPROM) or electrically erasable PROM (EEPROM). A unit of persistent storage <NUM> may include various forms of non-volatile RAM (NVRAM), such as FLASH memory, or solid-state storage, magnetic disk or optical disk such as CD-ROM or DVD-ROM, and may be coupled to I/O subsystem <NUM> for storing information and instructions. Storage <NUM> is an example of a non-transitory computer-readable medium that may be used to store instructions and data which when executed by the processor <NUM> cause performing computer-implemented methods to execute the techniques herein.

The instructions in memory <NUM>, ROM <NUM> or storage <NUM> may comprise 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 apps. The instructions may comprise an operating system and/or system software; one or more libraries to support multimedia, programming or other functions; data protocol instructions or stacks to implement TCP/IP, HTTP or other communication protocols; file format processing instructions to parse or render files coded using HTML, XML, JPEG, MPEG or PNG; user interface instructions to render or interpret 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 structured query language (SQL) or no SQL, an object store, a graph database, a flat file system or other data storage.

Computer system <NUM> may be coupled via I/O subsystem <NUM> to at least one output device <NUM>. In one example, output device <NUM> is a digital computer display. Examples of a display that may be used include a touch screen display or a light-emitting diode (LED) display or a liquid crystal display (LCD) or an e-paper display. Computer system <NUM> may include other type(s) of output devices <NUM>, alternatively or in addition to a display device. Examples of other output devices <NUM> include printers, ticket printers, plotters, projectors, sound cards or video cards, speakers, buzzers or piezoelectric devices or other audible devices, lamps or LED or LCD indicators, haptic devices, actuators or servos.

At least one input device <NUM> is coupled to I/O subsystem <NUM> for communicating signals, data, command selections or gestures to processor <NUM>. Examples of input devices <NUM> include touch screens, microphones, still and video digital cameras, alphanumeric and other keys, keypads, keyboards, graphics tablets, image scanners, joysticks, clocks, switches, buttons, dials, slides, and/or various types of sensors such as force sensors, motion sensors, heat 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.

Another type of input device is a control device <NUM>, which may perform cursor control or other automated control functions such as navigation in a graphical interface on a display screen, alternatively or in addition to input functions. Control device <NUM> may be a touchpad, a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor <NUM> and for controlling cursor movement on display <NUM>. The input device may have at least two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions 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, gearshift mechanism or other type of control device. An input device <NUM> may include a combination of multiple different input devices, such as a video camera and a depth sensor.

Computer system <NUM> may comprise an internet of things (IoT) device in which one or more of the output device <NUM>, input device <NUM>, and control device <NUM> are omitted. Or, the input device <NUM> may comprise one or more cameras, motion detectors, thermometers, microphones, seismic detectors, other sensors or detectors, measurement devices or encoders and the output device <NUM> may comprise a special-purpose display such as a single-line LED or LCD display, one or more indicators, a display panel, a meter, a valve, a solenoid, an actuator or a servo.

When computer system <NUM> is a mobile computing device, input device <NUM> may comprise a global positioning system (GPS) receiver coupled to a GPS module that is capable of triangulating to a plurality of GPS satellites, determining and generating geo-location or position data such as latitude-longitude values for a geophysical location of the computer system <NUM>. Output device <NUM> may include hardware, software, firmware and interfaces for generating position reporting packets, notifications, pulse or heartbeat signals, or other recurring data transmissions that specify a position of the computer system <NUM>, alone or in combination with other application-specific data, directed toward host <NUM> or server <NUM>.

Computer system <NUM> may implement the techniques described herein using customized hard-wired logic, at least one ASIC or FPGA, firmware and/or program instructions or logic which when loaded and used or executed in combination with the computer system causes or programs the computer system to operate as a special-purpose machine. The techniques herein are performed by computer system <NUM> in response to processor <NUM> executing at least one sequence of at least one instruction contained in main memory <NUM>. Such instructions may be read into main memory <NUM> from another storage medium, such as storage <NUM>. Hard-wired circuitry may be used in place of or in combination with software instructions.

Non-volatile media includes, for example, optical or magnetic disks, such as storage <NUM>. Volatile media includes dynamic memory, such as memory <NUM>. Common forms of storage media include, for example, a hard disk, solid state drive, flash drive, magnetic data storage medium, any optical or physical data storage medium, memory chip, or the like.

For example, transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise a bus of I/O subsystem <NUM>.

Various forms of media may be involved in carrying at least one sequence of at least one instruction to processor <NUM> for execution. The remote computer can load the instructions into its dynamic memory and send the instructions over a communication link such as a fiber optic or coaxial cable or telephone line using a modem. A modem or router local to computer system <NUM> can receive the data on the communication link and convert the data to a format that can be read by computer system <NUM>. For instance, a receiver such as a radio frequency antenna or an infrared detector can receive the data carried in a wireless or optical signal and appropriate circuitry can provide the data to I/O subsystem <NUM> such as place the data on a bus. I/O subsystem <NUM> carries the data to memory <NUM>, from which processor <NUM> retrieves and executes the instructions. The instructions received by memory <NUM> may optionally be stored on storage <NUM> either before or after execution by processor <NUM>.

Communication interface <NUM> provides a two-way data communication coupling to network link(s) <NUM> that are directly or indirectly connected to at least one communication networks, such as a network <NUM> or a public or private cloud on the Internet. For example, communication interface <NUM> may be an Ethernet networking interface, integrated-services digital network (ISDN) card, cable modem, satellite modem, or a modem to provide a data communication connection to a corresponding type of communications line, for example an Ethernet cable or a metal cable of any kind or a fiber-optic line or a telephone line. Network <NUM> broadly represents a local area network (LAN), wide-area network (WAN), campus network, internetwork or any combination thereof. Communication interface <NUM> may comprise a LAN card to provide a data communication connection to a compatible LAN, or a cellular radiotelephone interface that is wired to send or receive cellular data according to cellular radiotelephone 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, communication interface <NUM> sends and receives electrical, electromagnetic or optical signals over signal paths that carry digital data streams representing various types of information.

Network link <NUM> typically provides electrical, electromagnetic, or optical data communication directly or through at least one network to other data devices, using, for example, satellite, cellular, Wi-Fi, or BLUETOOTH technology. For example, network link <NUM> may provide a connection through a network <NUM> to a host computer <NUM>.

Furthermore, network link <NUM> may provide a connection through network <NUM> or to other computing devices via internetworking devices and/or computers that are operated by an Internet Service Provider (ISP) <NUM>. ISP <NUM> provides data communication services through a world-wide packet data communication network represented as internet <NUM>. A server computer <NUM> may be coupled to internet <NUM>. Server <NUM> broadly represents any computer, data center, virtual machine or virtual computing instance with or without a hypervisor, or computer executing a containerized program system such as DOCKER or KUBERNETES. Server <NUM> may represent an electronic digital service that is implemented using more than one computer or instance and that is accessed and used by transmitting web services requests, uniform resource locator (URL) strings with parameters in HTTP payloads, API calls, app services calls, or other service calls. Computer system <NUM> and server <NUM> may form elements of a distributed computing system that includes other computers, a processing cluster, server farm or other organization of computers that cooperate to perform tasks or execute applications or services. Server <NUM> may comprise 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 apps. The instructions may comprise an operating system and/or system software; one or more libraries to support multimedia, programming or other functions; data protocol instructions or stacks to implement TCP/IP, HTTP or other communication protocols; file format processing instructions to parse or render files coded using HTML, XML, JPEG, MPEG or PNG; user interface instructions to render or interpret 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 <NUM> may comprise a web application server that hosts a presentation layer, application layer and data storage layer such as a relational database system using structured query language (SQL) or no SQL, an object store, a graph database, a flat file system or other data storage.

Computer system <NUM> can send messages and receive data and instructions, including program code, through the network(s), network link <NUM> and communication interface <NUM>. The received code may be executed by processor <NUM> as it is received, and/or stored in storage <NUM>, or other non-volatile storage for later execution.

The execution of instructions as described in this section may implement a process in the form of an instance of a computer program that is being executed, and consisting of program code and its current activity. Depending on the operating system (OS), a process may be made up of multiple threads of execution that execute instructions concurrently. In this context, a computer program is a passive collection of instructions, while a process may be the actual execution of those instructions. Several processes may be associated with the same program; for example, opening up several instances of the same program often means more than one process is being executed. Multitasking may be implemented to allow multiple processes to share processor <NUM>. While each processor <NUM> or core of the processor executes a single task at a time, computer system <NUM> may be programmed to implement multitasking to allow each processor to switch between tasks that are being executed without having to wait for each task to finish. Switches may be performed when tasks perform input/output operations, when a task indicates that it can be switched, or on hardware interrupts. Time-sharing may be implemented to allow fast response for interactive user applications by rapidly performing context switches to provide the appearance of concurrent execution of multiple processes simultaneously. In an embodiment, for security and reliability, an operating system may prevent direct communication between independent processes, providing strictly mediated and controlled interprocess communication functionality.

Claim 1:
A method (<NUM>) comprising:
receiving (<NUM>) at a network element (<NUM>), from a client computer, a packet that is associated with initiating a client-server session;
in response to receiving (<NUM>) the packet that is associated with initiating the client-server session, transmitting (<NUM>) a workload request from the network element (<NUM>) to a workload orchestrator (<NUM>);
the workload orchestrator (<NUM>) selecting (<NUM>) a selected server (<NUM>), from among a plurality of available geographically or logically distributed servers in network edge computing nodes, to process the client-server session;
the workload orchestrator (<NUM>) transmitting (<NUM>) a request to the selected server (<NUM>) to create a workload to process the client-server session;
receiving at the network element (<NUM>), from the workload orchestrator (<NUM>), data identifying the selected server (<NUM>);
reprogramming (<NUM>) forwarding tables of the network element (<NUM>) to cause all later packets associated with the same client-server session and received from the client computer at the network element (<NUM>) to be forwarded to the selected server (<NUM>) such that later packets bypass the workload orchestrator (<NUM>); and
forwarding (<NUM>) from the network element (<NUM>) one or more other packets associated with the same client-server session and received from the client computer to the selected server (<NUM>) such that the one or more other packets bypass the workload orchestrator.