Intent-drive microservices placement and selection of service endpoint
The 'Service Manager' system optimizes microservices deployment and chaining by considering application intents and hardware topology, addressing inefficiencies in existing cloud environments to enhance performance and efficiency.
Patent Information
- Application Number
- PCT/IB2024/057831
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-08-12
- Publication Date
- 2026-02-19
AI Technical Summary
Existing microservices deployment in cloud environments face challenges such as lack of exposure to cloud control-plane capabilities, static affinity rules, primitive endpoint selection logic, and neglect of underlying topology, leading to suboptimal performance and inefficient scheduling.
A system comprising a 'Service Manager' within the cloud control-plane that annotates microservices with capabilities and requirements, groups them logically, and assists in scheduling and chaining based on application intents, hardware topology, and current deployment metrics, using a 'Helper Node Agent' for runtime peer-microservice pairing.
Enhances microservices deployment to meet application KPIs by optimizing communication mechanisms like RDMA or shared-memory, ensuring efficient scheduling and chaining without impacting application performance.
Smart Images

Figure IB2024057831_19022026_PF_FP_ABST
Abstract
Description
INTENT-DRIVE MICROSERVICES PLACEMENT AND SELECTION OF SERVICE ENDPOINT TECHNICAL FIELD
[0001] The present disclosure generally relates to systems and methods fordeploying and chaining microservices. BACKGROUND
[0002] Modern best-practice cloud-native applications are built using“microservices” paradigm –typically packaged as containers, which are deployed and orchestrated by an orchestration system (e.g., Kubernetes) across small- or large-scale datacenters. These microservices interact using their well-defined application programming interfaces (API) over one or more technologies like HTTP (hypertext transfer protocol), REST (Representational State Transfer), RPC (Remote Procedure Call) (e.g., gRPC (see, e.g., "Introduction to gRPC,” available at: https: / / grpc.io / docs / what-is-grpc / introduction)), etc. User / external requests are served byto various self-contained backend microservices, as required to satisfy the requests.
[0003] The microservice paradigm allows services to be developed independentlyusing different programming languages. Interaction between microservices happens over a well- defined interface like REST or RPCs. Example, a server-microservice could be developed using C / C++, while the client-microservice can be developed using Golang / Python. Messages are marshalled / serialized for compatibility before sent to the peer microservices.
[0004] For example, in Kubernetes, a Service is a method for exposing certaincapability of application that is running as one or more Kubernetes Pods in your cluster. See, e.g., “Service in Kubernetes,” available at: https: / / kubernetes.io / docs / concepts / services- networking / service / . In Kubernetes, a service is an abstraction that defines a logical set of pods and a policy by which to access them. Services enable loose coupling between dependent parts of an application and provide load balancing and service discovery for those pods. When a service is created, Kubernetes creates an endpoint for it, which is a stable IP address and port that other podscan use to access the service. Services can be of different types, such as ClusterIP, NodePort, and LoadBalancer, each serving a different purpose in how they expose the pods.
[0005] In summary, a service in Kubernetes provides a consistent way to access aset of pods, regardless of how many there are or where they are running in the cluster. SUMMARY
[0006] One embodiment under the present disclosure comprises a methodperformed by a cloud control plane to deploy and chain microservices. The method includes: annotating one or more microservices capable of providing one or more services with one or more attributes of the one or more microservices, wherein the one or more microservices are deployed at one or more servers serving the cloud control plane, wherein each of the one or more servers comprises a node agent; transmitting, by the cloud control plane to the service manager, a scheduling request for the one or more microservices; transmitting, to the service manager, one or more parameters defining the one or more microservices and / or one or more servers; creating one or more rankings of the one or more microservices, each of the one or more rankings based on the one or more parameters; receiving, from the service manager, a suggested microservice and / or suggested server from the one or more microservices and / or one or more servers, based at least in part on the scheduling request and the one or more rankings; scheduling the suggested microservice and / or suggested server for the scheduling request; receiving, by the service manager from a node agent, a runtime request for the one or more services; and communicating, to the node agent, to map communications for the suggested server and / or suggested microservice to provide the one or more services of the runtime request.
[0007] Another possible method embodiment comprises a method performed by aservice manager to deploy and chain microservices amongst one or more servers comprising one or more microservices configured to provide one or more services. The method includes: receiving one or more user requirements; receiving one or more parameters of the one or more servers and / or one or more microservices; receiving a request for the one or more services to support one or more applications; identifying, based at least in part on the one or more user requirements and the one or more parameters, one or more selected microservices and / or one or more selected servers toprovide the one or more services; and transmitting the identification of the one or more selected microservices and / or one or more selected servers to an application scheduler.
[0008] Another embodiment under the present disclosure is a service manager todeploy and chain microservices amongst one or more servers providing one or more microservices configured to provide one or more services. The service manager comprises: a processor; and a memory containing instructions executable by the processor whereby the service manager is operative to: annotate the one or more microservices with one or more attributes; receive, from the cloud control plane, a scheduling request for the one or more microservices; transmit , to the cloud control plane, one or more parameters defining the one or more microservices and / or one or more servers, wherein each of the one or more servers comprises a node agent; create one or more rankings of the one or more microservices, each of the one or more rankings based on the one or more parameters; transmit, to the cloud control plane, a suggested microservice and / or suggested server from the one or more microservices and / or one or more servers, based at least in part on the scheduling request and the one or more rankings; schedule, the suggested microservice and / or suggested server for the scheduling request; receive, from a node agent, a runtime request for the one or more services; and communicate, to the node agent, to map communications for the suggested server and / or suggested microservice to provide the one or more services of the runtime request.
[0009] Another embodiment under the present disclosure is a service manager todeploy and chain microservices amongst one or more servers providing one or more microservices configured to provide one or more services. The service manager comprises: a service information repository configured to store static and dynamic information about one or more deployed microservices being provided by the one or more microservices; an application hint processor configured to generate and process application meta data received from a user related to an application requesting the one or more microservices, and further configured to provide an application specific hint to the service information repository for use in microservice placement when scheduling the one or more microservices; a service logical grouping generator configured to generate a service manifest through grouping of existing exposed services offered by the one or more microservices based on a functionality requested by the application; and a service broker configured to pair and connect the application with a suitable one of the one or more microservicesbased at least in part on the static and dynamic information available in the service information repository.
[00010] A further embodiment under the present disclosure is a method performedby a node agent for deploying and chaining one or more services requested by an application at one or more pods and / or one or more servers. The method comprises receiving, from a service manager, a request to map communications for a suggested server of one or more servers and / or a suggested microservice of the one or more microservices to provide the one or more services requested by an application. This can be characterized in that the service manager has performed the steps of; annotating the one or more microservices capable of providing the one or more services with one or more attributes of the one or more microservices, wherein the one or more microservices are deployed at the one or more servers serving the cloud control plane, wherein each of the one or more servers comprises a node agent; transmitting, by the cloud control plane to the service manager, a scheduling request for the one or more microservices; transmitting, to the service manager, one or more parameters defining the one or more microservices and / or the one or more servers; creating one or more rankings of the one or more microservices, each of the one or more rankings based on the one or more parameters; receiving, from the service manager, a suggested microservice and / or suggested server from the one or more microservices and / or one or more servers, based at least in part on the scheduling request and the one or more rankings; scheduling the suggested microservice and / or suggested server for the scheduling request; receiving, by the service manager from a node agent, a runtime request for the one or more services; and communicating, to the node agent, to map communications for the suggested server and / or suggested microservice to provide the one or more services of the runtime request.
[00011] This summary is provided to introduce a selection of concepts in asimplified form that are further described below in the detailed description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an indication of the scope of the claimed subject matter.BRIEF DESCRIPTION OF THE DRAWINGS
[00012] For a more complete understanding of the present disclosure, reference isnow made to the following descriptions taken in conjunction with the accompanying drawings, in which:
[00013] Fig. 1 illustrates an example service manager and its corresponding units;
[0014] Fig. 2 illustrates an example of service manager sub-components;
[0015] Fig. 3 illustrates one embodiment of a cloud control plane and servicemanager under the present disclosure;
[00016] Fig. 4 illustrates one embodiment of a cloud control plane and servicemanager under the present disclosure;
[00017] Fig. 5 illustrates one embodiment of a cloud control plane and servicemanager under the present disclosure;
[00018] Fig. 6 illustrates one embodiment of a cloud control plane and servicemanager under the present disclosure;
[00019] Fig. 7 illustrates a flow-chart of path taken by a first packed when anapplication tries to communicate with a service under the present disclosure;
[00020] Fig.8 illustrates one embodiment of a cloud control plane under the presentdisclosure;
[00021] Fig. 9 illustrates a flow-chart of a method embodiment under the presentdisclosure;
[00022] Fig. 10 illustrates a flow-chart of a method embodiment under the presentdisclosure;
[00023] Fig. 11 illustrates an embodiment of a computing device under the presentdisclosure;
[00024] Fig. 12 shows a schematic of a communication system embodiment underthe present disclosure;
[00025] Fig. 13 shows a schematic of a user equipment embodiment under thepresent disclosure; and
[00026] Fig.14 shows a schematic of a network node embodiment under the presentdisclosure.DETAILED DESCRIPTION
[00027] Before describing various embodiments of the present disclosure in detail,it is to be understood that this disclosure is not limited to the parameters of the particularly exemplified systems, methods, apparatus, products, processes, and / or kits, which may, of course, vary. Thus, while certain embodiments of the present disclosure will be described in detail, with reference to specific configurations, parameters, components, elements, etc., the descriptions are illustrative and are not to be construed as limiting the scope of the claimed embodiments. In addition, the terminology used herein is for the purpose of describing the embodiments and is not necessarily intended to limit the scope of the claimed embodiments.
[00028] Embodiments are described below with respect to Kubernetes or othercontainer-based orchestration systems. The following terms may be helpful for understanding Kubernetes and similar systems.
[00029] Microservice: Refers to a design pattern for breaking down applications intosmaller, independently deployable units. A microservice is commonly referred to as a pod in Kubernetes.
[00030] Service in Cloud / Kubernetes: Refers to mechanisms for managingcommunication between different parts of an application or providing access to resources within a deployment environment.
[00031] Kubernetes Service: In Kubernetes, a "Service" is an abstraction that definesa logical set of Pods and a policy to access them. It provides a stable endpoint (IP address and DNS name) to access a set of Pods, which can be dynamically created and destroyed. Kubernetes services also support load balancing and service discovery within a cluster.
[00032] Cloud Service: In a broader cloud context (e.g., AWS, Azure, GoogleCloud), a "service" might refer to any managed service offered by the cloud provider. Examples include databases, storage services, messaging queues, and more.
[00033] In essence, while a microservice is a way to structure and developapplications, a "service" in cloud and Kubernetes environments is more about how to manage and expose these components for communication and accessibility.
[0034] There currently exist certain challenges. In today’s era of cloud computing,the focus of service providers is to deploy the cloud native workload / microservices in the most performance and cost-effective manner. Most of the service providers use orchestrators such as Kubernetes for deploying the workload in the automated manner and to reap the cloud native benefits in the most effective manner. While the microservices paradigm enable cloud-native development for portability, independent deployment, and better application scaling, they face following challenges:
[00035] First, capabilities of the microservices are not exposed to the cloud control-plane. Typically, cloud-based microservices focus on portability and inter-operability. These abstractions reduce the opportunities for performance optimization, unless the microservice are aware of their peer-microservice capabilities. For example, previous work has showcased the benefits of dynamically switching communication between the microservices to an optimized data- plane (like RDMA (Remote Direct Memory Access), shared-memory etc.) instead of always using default gRPC (Google remote procedure calls) over HTTP / 2 TCP (hypertext transfer protocol – transmission control protocol) data-plane and avoid serialization overheads. See, e.g., WO 2024 / 142075A1 titled “Data Plane Optimization for Microservices.” To achieve such optimizations, it is necessary to expose the capabilities of the microservices to cloud-control plane for efficient orchestration of microservices across servers.
[00036] Second, most affinities and anti-affinities rules are static. Labellingmicroservices with ‘nodeSelector’ and (anti-)affinities does not lead to optimized solution for scheduling microservice across the cluster. See, e.g., "Kuberenetes nodeSelector & Affinity and anti-affinity," available at: https: / / kubernetes.io / docs / concepts / scheduling-eviction / assign-pod- node / #nodeselector . Most of the labels are pre-assigned to the microservices and node does not account deployment capabilities – server capabilities, current server utilization, existing pods deployment, peer-microservice capabilities etc.
[00037] Third, logic for selecting service endpoints is primitive. In cloud,specifically in Kubernetes, a “service” is an abstract way to expose a set of pods as a network service, allowing them to be accessed by other pods or external users. See, e.g., "Service in Kubernetes," available at: https: / / kubernetes.io / docs / concepts / services-networking / service / . It provides load balancing and DNS (domain name system) for pods, making it easier to discover and connect to the desired services in a cluster. Typically, microservices make a connection requestto the service name or virtual IP. The node networking proxy agent (e.g., kube-proxy in Kubernetes) takes care of routing the request to the suitable peer-microservice (endpoints). This is achieved by using iptables (see e.g., “IPTables," available at: https: / / man7.org / linux / man- pages / man8 / iptables.8.html), nftables (see, e.g., "What is available at:,or the latest container networking solutions like Cilium (see e.g., "Cilium - eBPF - The Future of Networking & Security," available at: https: / / cilium.io / blog / 2020 / 11 / 10 / ebpf-future-of-networking / ) utilizes eBPF-based routing ebpf / ). Forexample, in proxy component IPmechanism for Services. Each instance of kube-proxy for the addition and removal of Service and EndpointSlice objects. For each Service, kube-proxy configures the underlying packet routing mechanism (like IPTables) on the node to capture traffic destined to the Service's IP and port and redirect that traffic to one of the Service's endpoints (endpoint are usually a Pod in Kubernetes, but it can also be any arbitrary user-provided IP address). A control loop ensures that the rules on each node are reliably synchronized with the Service and Endpoints state as indicated by the API (application programming interface) server. Logic used for identifying suitable endpoints are primitive. Some of the widely used policies for identifying endpoints could be round robin based, least number of active connections, random etc. Existing policies don’t take into consideration the capabilities of microservices, nor do they contact cloud control-plane to retrieve necessary information when identifying service endpoints. Hence it necessary to devise a method with advanced policies that work in synergy with cloud control- plane.
[00038] Fourth, underlying topology and capabilities are not considered whiledeploying microservices. The cloud orchestrator / scheduler usually focuses on the resource utilization as the primary mechanism for scheduling the incoming workload request. Resource utilization metrics may not always suffice the prerequisites for provisioning of workloads across the servers to ensure the performance of the workload. In certain scenarios it necessary to consider the underlying topology for identifying the service endpoint to chain the microservices. For example, microservice that needs low latency should be paired with its counterpart that located infewer network hops, or a microservice that transfer message in bulk should be paired with a microservice that is situated in the network path with more bandwidth available etc.
[00039] Hence it is necessary to propose a system and method for deployment-awarescheduling and chaining of microservices to meet their KPIs.
[00040] Certain aspects of the disclosure and their embodiments may providesolutions to these or other challenges. For example, in certain embodiments, microservice are annotated with their capabilities, functionalities, and requirements. Capabilities can include e.g., programming language compatibility, API version compatibility etc. Functionalities can include e.g., main services offered by the microservice, microservice exposed logging functionality / API, stats collection etc. Requirements can include e.g., the important KPIs / intent microservice needs to satisfy. This information is preferably provided by the application developer.
[00041] Certain embodiments propose a new system component “Service Manager”as part of the cloud control-plane. The Service Manager understands cluster topology, existing microservices’ deployment, capabilities, and functionalities. Service Manager creates a multi-layer mapping of service endpoints to the service. Figure 1 illustrates one embodiment of a Service Manager and its corresponding inputs. Most information required by Service Manager is dynamically gathered and built at runtime except Microservices capabilities, functionalities, and requirements (provided by user as part of the deployment manifest).
[00042] The service endpoints can be logically grouped into various possible groupsbased on programming language compatibility, sever endianness, communication capabilities (support for RDMA, shared memory etc.). These logical groups are abstracted and exposed as traditional Kubernetes “service”.
[00043] When a new microservices is deployed, Service Manager helps the cloudcontroller to deploy the microservice on an appropriate node / server considering microservice requirements and existing deployment metrics. When the microservice initiates the connection to the service, Service Manager identifies the suitable service endpoint (peer-microservice) from logical group and pairs the microservice to the appropriate service endpoint. Following communication from the microservice are routed to the paired microservice endpoint automatically.
[0044] One benefit goal of certain embodiments is to identify and pair suitablemicroservices. Once the connection is established, it is up to the microservices on how and when to switch to optimized data-plane like RDMA or shared-memory.
[00045] Other aspects of various embodiments include e.g.,^ Systems and methods to efficiently deploy and chain microservices;^ Application / microservice can express the intent / hints for the cloudorchestrator such as low latency, hardware dependencies etc. to be considered during deployment time; ^Microservice are annotated with capabilities such as programminglanguages and version compatibility, important application KPIs / intents to be considered, services utilized by the microservice etc.; ^Factors such as application intent, underlying hardware topology, currentlydeployed microservices, current utilization, stats related to application KPIs, operator’s requirements etc. are considered when deploying and chaining microservice(s); ^At microservice schedule time, the proposed module ‘Service Manager’provides hints to the application scheduler / orchestrator suitable node to deploy the application – considering various multiple application and system parameters; ^At runtime when microservice tries to connect to a service, the proposedmodule ‘Service Manager’ identifies suitable peer-microservice and pair the microservices.
[00046] Previous solutions failed to provide the benefits achieve with proposedembodiments, such as: ^Enhanced ways to schedule and chain microservices (a microservice thatoffers the ‘service’ with a microservice requesting for the ‘service’) based on factors like a. application-intents – KPIs (required latency, throughput etc.);b. non-traditional factors such as application’s capabilities - programminglanguage, communication capabilities (microservices’ ability to utilize faster communication like RDMA or Shared-Memory);c. existing deployment parameters such as underlying physical topology,resource utilization etc. ^Systems and methods to chain microservices based on the ‘service’requested and offered - by introduction of new module / component “Service Manger” which can: a. Influence the control-plane to schedule microservice on appropriatenode considering non-traditional factors (underlying topology, current microservices deployed, utilization etc.), and creating logical groups for identifying nodes and suitable existing endpoints (microservices); and b. Chain the microservice with peer-microservice that offers theapplication requested service considering application KPIs and intent, application capabilities like programming language, communication capabilities (RDMA, Shared-Memory) etc. at runtime with the assistance of a Helper Node Agent
[00047] Certain embodiments may provide one or more of the following technicaladvantages. Certain embodiments allow cloud orchestrator to deploy the applications in a “effective” or “efficient” way to provide better performance to a respective application. Embodiments can provide a means to influence the control-plane to deploy and chaining microservice that will help to maintain application KPIs. A dynamic convergent mechanism based on the application preferences is provided in certain embodiments. Also provided are methods which consider physical topology, application deployment, current resource utilization etc. All these factors combined provides better solutions compared to existing iptables, IPVS (IP Virtual Server) or naive eBPF (extended Berkeley Packet Filter)-based solutions. Disclosed embodiments can also be easily augmented and integrated over the existing iptables, IPVS and eBPF based solutions. Another advantage is that proposed solutions have no or minimal impact on application performance at runtime. Proposed solutions are also transparent to application and do not require modification to application code. In addition, the logic to decide the microservice placement and chaining of peer-microservices can be decided by proposed solutions. Once it is decided the existing routing mechanism can be used to forward the packets between peer microservices at runtime. A further advantage is that in some embodiments only the first packet directed towards establishing connection is sent to the Service Manager for deciding the peer-microservice.
[0048] Some of the embodiments contemplated herein will now be described morefully with reference to the accompanying drawings. Embodiments are provided by way of example to convey the scope of the subject matter to those skilled in the art.
[00049] One objective of certain embodiments is to chain microservices so thatapplication KPIs can be met. This can require optimization at two instances: ^Application schedule time – Instantiate the microservice on optimalserver / node so that microservice will have opportunity to leverage faster communication mechanism (such as Shared-Memory, RDMA etc.). ^Runtime:a. Pair the microservice with the suitable candidate microservice andprogram the route between the microservices for message flows; b. Microservices may switch to the faster communication mechanism(RDMA, shared-memory etc.) when possible.
[00050] To efficiently provision and chain microservices, certain embodiments cancomprise a new module ‘Service Manager’ which can comprise part of the Cloud Control-Plane. Apart from the Service Manager, server / nodes can comprise an ‘Helper Node Agent’ responsible for sending the information from the node to the Service Manager for facilitating the pairing of microservices. Helper Node Agent can be a new module or an existing entity like Kube-proxy that can be programmed to function based on the embodiments proposed hereunder.
[00051] Figure 1 shows one proposed module ‘Service Manager’ embodiment andsome important (but non-limiting) parameters passed as input to the Service Manager. System 5 of Figure 1 illustrates a service manager 10, cloud control plane 20, server(s) 30, and helper node agent(s) 35 which may be provisioned on servers 30. Inputs 16 can be received by Service Manager 10. Examples of possible inputs 16 include input Parameters that can be fetched from Cloud Control Plane 20, such as e.g.: ^Underlying cluster topology information, e.g., physical hardware topology ofthe servers and the how they are interconnected, including the capabilities like 200G ethernet, RDMA capable etc. ^Existing applications deployed, e.g., existing microservices that are alreadydeployed with their physical location on server. This information also includes themicroservices capabilities such the services exposed / consumed by the microservices, programming language and version, endianness etc. ^Microservice capabilities and requirements, e.g., requirements and capabilitiesof the microservice that is about to be scheduled and instantiated. It is expected that user provides the capabilities (such as programming language of the microservice, service exposed by the microservice, supported types of communication HTTP / REST, RDMA, shared-memory etc., nature of communication – data is sent in short burst but large packets etc.) and requirements (such as important KPIs (throughput, latency etc.) the deployment should be optimized for, service the microservice is exposed to consume etc.). One non-limiting method of specifying the capabilities and requirements is through the application manifest file. In Kubernetes this could the Pod specification file and specifically the capabilities and requirements are specified in the ‘Annotation’ field in the manifest file ^Current Resource Utilization, e.g., the availability and current utilization ofhardware resources in the servers, utilization of the microservices – measured in terms of the number of active connections served the microservice, average response time etc. ^Cloud Operator’s requirements, e.g., Cloud operators can impose requirementsand constraints on different microservices such as certain microservices cannot be scheduled on certain reserved servers, certain network bandwidth is reserved for critical application etc.
[00052] Figure 2 illustrates one detailed embodiment of a Service Manager 200 andpossible information flow across various components. Service manager 200 has the following subcomponents.
[00053] Service Information repository 220: The service information repository 220can comprise a database which has static and dynamic information about deployed services. The static information pertains to storage of the workload specific information which includes architecture, service type, binary coding language etc. The dynamic information is related to monitoring aspect of the exposed services and system parameters such as active connectionsparams, current resource utilization etc. Figure 3 shows sample deployment cluster topology which is processed to build the information about the services and associated endpoints.
[00054] Application hint processor 260: This component can be responsible forgenerating and processing the application meta data. The meta data includes language details for building the application binaries, hardware architecture, encoding formats for message exchange etc. User also provides the rank for each of these meta data to consider the importance of each of these parameters contributing towards application performance. Application hint processor 260 would populate the service information repository 220 with the application specific hint. Service Manager 200 uses the hints processed by this component to influence the pod placement during schedule time (see Figure 5 below).
[00055] Service logical grouping generator 240: This component is responsible forgenerating service manifest through grouping of existing exposed services based on the provided functionality. Apart from the static grouping, there is also dynamic grouping is created based on the utilization of the endpoints backing these services, average response time by the endpoints etc. are accounted for dynamical grouping. Figure 4 illustrates a sample grouping generator based on the service manifests. Illustration shows the logical group of service “ABC” based on the implementation language.
[00056] Service broker 280: The service broker 280 is an important internalcomponent of the Service Manager 200 responsible for pairing and connecting the requesting client pod with suitable endpoint based on the information available in the Service Information repository 220. Figure 6 and Figure 7 capture example embodiments of the service broker 280 of the service manager 200. At schedule time, service broker 280 analyzes the various application requirements, current deployment parameters and cloud operator requirements to provide hint to the application scheduler about the suitable node / server to provision the application. At runtime, when the application tries to connect to the ‘Service’, the service broker 280 identifies the suitable candidate microservice and chains the microservices.
[00057] Figure 3 illustrates one embodiment of physical deployment ofmicroservice on servers with different underlying topologies. Cloud control plane 400 can comprise application / pod scheduler 410 (from the prior art) and Service Manager 420 (disclosed herein). Servers 425, 455, 475 may support cloud control plane 400 and may comprise different server pods 490 with different capabilities / microservices / applications 492 at each server 425, 455,475. Helper node agents 430, 460, 480 may be deployed at each server 425, 455, 475 and are improvements to the prior art and can assist Service Manager 420. Switches 495 may be manipulated as helper node agents 430, 460, 480 and Service Manager 420 carry out their tasks and assign microservices by server pod 490 per server 425, 455, 475.
[00058] Figure 4, building on Figure 3, illustrates one embodiment of how aMicroservice Controller envisages different possible logical groups from the existing deployment of microservices. The groups here are for illustrative purpose, grouping can be made with different combinations of parameters. Cloud control plane 400 comprise application scheduler 410 (from prior art) and Service Manager 420 (such as in embodiments presented herein). Service Manger 420 may group microservices 492 of Figure 3 together based on different parameters, forming groups 403. Grouping can be on e.g., programming language, Endianness, utilization (e.g., resource or number of connections), or based on other parameters, KPIs, metrics, etc.
[00059] Differences from the prior art, and improvements thereon, can include thefollowing steps for chaining the microservices in comparison to the existing approaches. ^Service Manager can be integrated as a component / module as part of Cloudcontrol-plane. ^Information related to application requirement, underlying hardwaretopology, existing applications deployed, current resources utilization, cloud operator’s requirement can be provided to the Service Manager on-demand. It should be noted that typically, this information is available with cloud control-plane components. How the information is made available to the Service Manager is more of implementor’s choice and can take a variety of forms for embodiments herein.
[00060] At schedule-time:^ When a new application is to be provisioned, cloud-control plane providesthe information about the new microservice to the service manager. ^Service Manager parses the meta-information to understand the Servicesrequested and exposed by the microservice, the programming language and version of the microservices, the runtime capabilities of the microservices, etc. ^Along with application information, Service Manager considers the currenthardware topology, and current microservices deployment etc.^ Based on this Service Manager identifies a suitable node / server on whichthe microservice can be provisioned. ^This information is passed to the application scheduler as a hint forinfluencing the scheduling of the microservice.
[00061] Figure 5 shows idea of Service Manager 620 influencing the control-plane600 for scheduling the microservice placement. Figure 5 shows cloud control-plane 600 with service manager 620 and application scheduler 610. Servers 640 each comprise a number of pods 650 offering microservices. Client pod 645 may need assistance from one of pods 650. Influencing the control-plane 600 to schedule the microservice at desired location is vital, since microservice physical location plays a crucial part in finding the peer microservice to fulfil the service requested. For example, collocating the microservice with another compatible microservice provides an opportunity to communication via shared-memory or RDMA rather than the traditional network socket. As can be seen, service manager 620 provides hints to application scheduler 610 during application schedule time. Runtime
[00062] Embodiments under the present disclosure can involve a number ofactions / steps at runtime.
[00063] In the present disclosure, when the microservice tries to connect to a service(usually backed by Virtual IP), and if the microservice does not have a suitable peer microservice to deliver the requires service microservice, then the information about the Pod – (IP address, port, pod-name etc.) and the name of the service the microservice is trying to connect are forwarded to Service Manager.
[00064] To figure out if the microservice is not paired with another microservice, isto utilize the ‘Conntrack’ (Connection Tracking) feature in Linux. See, e.g., “Linux Networking - Conntrack,” available at: https: / / blog.devgenius.io / linux-networking-conntrack-13d2ed98b801; “Kubernetes Networking Problems Due to the Conntrack,” available at: https: / / deploy.live / blog / kubernetes-networking-problems-due-to-the-conntrack / . Conntrack is atrack of all logicalnetwork connections or sessions, and thereby relate all the packets which constitute a single connection.
[00065] For example, in Kubernetes Kube-proxy, the agent responsible formanaging services and the communication between pod utilizes iptables, IPVS or eBPF to maintain network rules. In-turn this mechanism also utilizes Conntrack to accelerate the lookup for destination information for existing flows.
[00066] Embodiments under the present disclosure can utilize flow mapping entry‘miss’ from the Conntrack track. Miss here means the information {source and destination entry} for the flow is not found in the Conntrack table. Typically, when there is miss in the Conntrack table, the control flow is passed to corresponding iptables, nftables or IPVS module to identify the suitable destination using the existing algorithms. Once the destination is identified, the IP address and the port of the destination is added to the Conntrack entry. The following packets are forwarded to the same destination based on the Conntrack entry.
[00067] But in the present disclosure, when there is a conntrack entry miss, control-flow is programmed to forward the information about the source {IPaddress and port} to the Helper Node Agent. The Node Helper agent places an eBPF hook on Conntrack misses control-path. Upon flow entry miss, information is forwarded to Service Manager. Based on the information {Source IPaddress and Port}, Service Manager queries the control-plane and retrieves the information about the microservice. Based on the microservice capabilities, requirements, service it is requesting for, other microservice deployment, current utilization of resources etc., Service Manager identifies suitable peer that can provide the service for the requesting microservice. The information {IPaddress, Port} of the destination microservice endpoints are passed to the corresponding Helper Node Agent. Helper Node Agent programs add the flow details {Source and Destination} into the Conntrack tables. Optionally the details can also be updated into the underlying packet forwarding mechanism (iptables, IPVS or nftables) rules table. It is to be noted aforementioned steps are invoked only for the first packet, when the client microservice tries to connect to the Service for the first time. Once the peer (destination) microservice is determined and added to the entry of the Conntrack table, the subsequent packets are forwarded to the designated microservice endpoint.
[00068] Figure 6 shows the control-flow when a client microservice tries to connectto a service and pair with a suitable endpoint. Cloud control plane 800 comprises service manager820 and application scheduler 810. Client pod 840 at server 830 may need assistance from one or more server pods 870. Server 830 comprises helper node agent 860 and exposed service 850 (a logical entity). First, the client pod 840 makes a request for a service, to exposed service 850. Next, exposed service 850 communicates this request to helper node agent 860. The first packet gets sent to the service manager 820, who directs a certain server pod 870 (endpoint) to provide the requested service for client pod 840. This is communicated back to the helper node agent 860, and then the exposed service 850, which then communicates with the indicated server pod (EP5 in this case).
[00069] Figure 7 illustrates one embodiment under the present disclosure of a high-level diagram inside a Linux networking stack highlighting a control-flow around Conntrack and the path taken by first packet when the application tries to communicate with the service. Figure 7 illustrates the path taken by first packet when the application tries to communicate with the service. At 1010, the application sends a first packet to the service domain or IP. At 1015, prerouting is performed. Step 1020 is to check for flow mapping in Conntrack table. At 1025 it is determined if flow mapping was found. If yes, at 1035, then the message is forwarded and at 1010 the existing destination IP Port is used to forward the packets. If no, then at 1030, packet information is sent to the node network agent 1045 (e.g., kube-proxy). From node network agent 1045, the destination IP Port is added to Conntrack 1052 and the packet is forwarded at 1050. Conntrack 1052 queries flow mapping at 1055. Node network agent 1045 can also query the service broker 1086 (within service manager 1088) about what is the suitable service endpoint at 1080. Service broker 1086 may respond at 1060. Service broker 1086 or service manager 1088 may calculate the suitable service endpoint for the application at 1070.
[00070] Figure 8 illustrates another possible system embodiment under the presentdisclosure. Cloud control plane 1220 may control services and microservices across multiple servers 1240, 1250, 1260 with containers 1270, 1280. Client 1275 (running a microservice) may utilize other containers 1280 for assistance. Some containers may be local (Container -2) while others may be remote like containers 1280 running microservices 1285. Containers 1270, 1280 may operate on a RPC framework 1278. Shared functionality can be e.g., shared memory 1230 (for containers 1270 local to each other), or RDMA 1235, or default HTTP / TCP 1238. Additional Embodiments
[0071] In scenarios where the endpoints (IPaddress and Ports) are resolved usingDNS service instead of the node network proxy, a service broker (such as service broker 1086 of Figure 7) can be envisioned to be part of the DNS service to respond with suitable endpoint considering the various parameters mentioned as part of this invention.
[00072] Certain use cases like gRPC has Client-side load-balancing where the clientqueries for the service, DNS can resolve the query with multiple available service endpoint. Client can choose to load-balance the communication among the different peer endpoints. In such scenario, a service broker (part of DNS) can respond with multiple candidate endpoints.
[00073] Certain embodiments can involve a scenario that uses encapsulated overlayfor networking between pods (which uses IPTables and IPVS). But other embodiments can also be extended to scenarios where unencapsulated underlay (where L3 IP based network is used to route packets between containers – for example BGP based routing). When the endpoints are determined for microservices it is added to the routing table instead of IPTables for routing.
[00074] A possible method embodiment under the present disclosure is shown inFigure 9. Method 1400 comprises a method performed by a cloud control plane comprising a service manager to deploy and chain microservices. Step 1410 is annotating one or more microservices capable of providing one or more services with one or more attributes of the one or more microservices, wherein the one or more microservices are deployed at one or more servers serving the cloud control plane, wherein each of the one or more servers comprises a node agent. Step 1420 is transmitting, by the cloud control plane to the service manager, a scheduling request for the one or more microservices. Step 1430 is transmitting, to the service manager, one or more parameters defining the one or more microservices and / or one or more servers. Step 1440 is creating one or more rankings of the one or more microservices, each of the one or more rankings based on the one or more parameters. Step 1450 is receiving, from the service manager, a suggested microservice and / or suggested server from the one or more microservices and / or one or more servers, based at least in part on the scheduling request and the one or more rankings. Step 1460 is scheduling (or transmitting by the service manager) the suggested microservice and / or suggested server for the scheduling request. Scheduling can be performed by the application scheduler in the cloud control plane. Step 1470 is receiving, by the service manager from a node agent, a runtime request for the one or more services. Step 1480 is communicating, to the node agent, to map communications for the suggested server and / or suggested microservice to provide the one or moreservices of the runtime request. Method 1400 can comprise a variety of alternative, optional, or additional steps or modifications. For example, the annotating in step 1410 could comprise associating the one or more microservices with their one or more capabilities. The one or more capabilities could comprise e.g., programming language compatibility; API version compatibility, main services offered by the microservice; microservice exposed logging functionality; stats collection capabilities; requirements; KPI requirements; an endianness of a server. The one or more parameters could comprise e.g., cluster topology; existing microservices deployment; capabilities; functionalities; current utilization metrics; operator requirements; physical hardware topology; physical hardware identification; interconnection data; average response time; number of active connections; bandwidth data.
[00075] Another possible method embodiment is shown in Figure 10. Method 1600is a method performed by a service manager to deploy and chain microservices amongst one or more servers comprising one or more microservices configured to provide one or more services. Step 1610 is receiving one or more user requirements. Step 1620 is receiving one or more parameters of the one or more servers and / or one or more microservices. Step 1630 is receiving a request for the one or more services to support one or more applications. Step 1640 is identifying, based at least in part on the one or more user requirements and the one or more parameters, one or more selected microservices and / or one or more selected servers to provide the one or more services. Step 1650 is transmitting the identification of the one or more selected microservices and / or one or more selected servers to an application scheduler. Method 1600 can comprise multiple alternative embodiments with additional or alternative steps.
[0001] Figure 11 shows another example method embodiment under the presentdisclosure. Method 1800 is a method performed by a node agent for deploying and chaining one or more services requested by an application at one or more pods and / or one or more servers. Step 1810 is receiving, from a service manager, a request to map communications for a suggested server of one or more servers and / or a suggested microservice of the one or more microservices to provide the one or more services requested by an application. This can be characterized in that the service manager has performed the steps of; annotating the one or more microservices capable of providing the one or more services with one or more attributes of the one or more microservices, wherein the one or more microservices are deployed at the one or more servers serving the cloud control plane, wherein each of the one or more servers comprises a node agent; transmitting, by the cloud controlplane to the service manager, a scheduling request for the one or more microservices; transmitting, to the service manager, one or more parameters defining the one or more microservices and / or the one or more servers; creating one or more rankings of the one or more microservices, each of the one or more rankings based on the one or more parameters; receiving, from the service manager, a suggested microservice and / or suggested server from the one or more microservices and / or one or more servers, based at least in part on the scheduling request and the one or more rankings; scheduling the suggested microservice and / or suggested server for the scheduling request; receiving, by the service manager from a node agent, a runtime request for the one or more services; and communicating, to the node agent, to map communications for the suggested server and / or suggested microservice to provide the one or more services of the runtime request. Method 1800 can comprise a variety of alternative, additional or optional steps.
[0002] Figure 12 shows an example of a communication system 3100 inaccordance with some embodiments. In the example, the communication system 3100 includes a telecommunication network 3102 that includes an access network 3104, such as a radio access network (RAN), and a core network 3106, which includes one or more core network nodes 3108. The access network 3104 includes one or more access network nodes, such as network nodes 3110a and 3110b (one or more of which may be generally referred to as network nodes 3110), or any other similar 3rd Generation Partnership Project (3GPP) access nodes or non-3GPP access points. Moreover, as will be appreciated by those of skill in the art, a network node is not necessarily limited to an implementation in which a radio portion and a baseband portion are supplied and integrated by a single vendor. Thus, it will be understood that network nodes include disaggregated implementations or portions thereof. For example, in some embodiments, the telecommunication network 3102 includes one or more Open-RAN (ORAN) network nodes. An ORAN network node is a node in the telecommunication network 3102 that supports an ORAN specification (e.g., a specification published by the O-RAN Alliance, or any similar organization) and may operate alone or together with other nodes to implement one or more functionalities of any node in the telecommunication network 3102, including one or more network nodes 3110 and / or core network nodes 3108.
[0003] Examples of an ORAN network node include an open radio unit (O-RU),an open distributed unit (O-DU), an open central unit (O-CU), including an O-CU control plane (O-CU-CP) or an O-CU user plane (O-CU-UP), a RAN intelligent controller (near-real time ornon-real time) hosting software or software plug-ins, such as a near-real time control application (e.g., xApp) or a non-real time control application (e.g., rApp), or any combination thereof (the adjective “open” designating support of an ORAN specification). The network node may support a specification by, for example, supporting an interface defined by the ORAN specification, such as an A1, F1, W1, E1, E2, X2, Xn interface, an open fronthaul user plane interface, or an open fronthaul management plane interface. Moreover, an ORAN access node may be a logical node in a physical node. Furthermore, an ORAN network node may be implemented in a virtualization environment (described further below) in which one or more network functions are virtualized. For example, the virtualization environment may include an O-Cloud computing platform orchestrated by a Service Management and Orchestration Framework via an O-2 interface defined by the O-RAN Alliance or comparable technologies. The network nodes 3110 facilitate direct or indirect connection of user equipment (UE), such as by connecting UEs 3112a, 3112b, 3112c, and 3112d (one or more of which may be generally referred to as UEs 3112) to the core network 3106 over one or more wireless connections.
[0004] Example wireless communications over a wireless connection includetransmitting and / or receiving wireless signals using electromagnetic waves, radio waves, infrared waves, and / or other types of signals suitable for conveying information without the use of wires, cables, or other material conductors. Moreover, in different embodiments, the communication system 3100 may include any number of wired or wireless networks, network nodes, UEs, and / or any other components or systems that may facilitate or participate in the communication of data and / or signals whether via wired or wireless connections. The communication system 3100 may include and / or interface with any type of communication, telecommunication, data, cellular, radio network, and / or other similar type of system.
[0005] The UEs 3112 may be any of a wide variety of communication devices,including wireless devices arranged, configured, and / or operable to communicate wirelessly with the network nodes 3110 and other communication devices. Similarly, the network nodes 3110 are arranged, capable, configured, and / or operable to communicate directly or indirectly with the UEs 3112 and / or with other network nodes or equipment in the telecommunication network 3102 to enable and / or provide network access, such as wireless network access, and / or to perform other functions, such as administration in the telecommunication network 3102.
[0006] In the depicted example, the core network 3106 connects the network nodes3110 to one or more host computing systems, such as host 3116. These connections may be direct or indirect via one or more intermediary networks or devices. In other examples, network nodes may be directly coupled to hosts. The core network 3106 includes one or more core network nodes (e.g., core network node 3108) that are structured with hardware and software components. Features of these components may be substantially similar to those described with respect to the UEs, network nodes, and / or hosts, such that the descriptions thereof are generally applicable to the corresponding components of the core network node 3108. Example core network nodes include functions of one or more of a Mobile Switching Center (MSC), Mobility Management Entity (MME), Home Subscriber Server (HSS), Access and Mobility Management Function (AMF), Session Management Function (SMF), Authentication Server Function (AUSF), Subscription Identifier De-concealing function (SIDF), Unified Data Management (UDM), Security Edge Protection Proxy (SEPP), Network Exposure Function (NEF), and / or a User Plane Function (UPF).
[0007] The host 3116 may be under the ownership or control of a service providerother than an operator or provider of the access network 3104 and / or the telecommunication network 3102. The host 3116 may host a variety of applications to provide one or more services. Examples of such applications include live and pre-recorded audio / video content, data collection services such as retrieving and compiling data on various ambient conditions detected by a plurality of UEs, analytics functionality, social media, functions for controlling or otherwise interacting with remote devices, functions for an alarm and surveillance center, or any other such function performed by a server.
[0008] As a whole, the communication system 3100 of Figure 12 enablesconnectivity between the UEs, network nodes, and hosts. In that sense, the communication system may be configured to operate according to predefined rules or procedures, such as specific standards that include, but are not limited to: Global System for Mobile Communications (GSM); Universal Mobile Telecommunications System (UMTS); Long Term Evolution (LTE), and / or other suitable 2G, 3G, 4G, 5G standards, or any applicable future generation standard (e.g., 6G); wireless local area network (WLAN) standards, such as the Institute of Electrical and Electronics Engineers (IEEE) 802.11 standards (WiFi); and / or any other appropriate wireless communication standard, such as the Worldwide Interoperability for Microwave Access (WiMax), Bluetooth, Z-Wave, Near Field Communication (NFC) ZigBee, LiFi, and / or any low-power wide-area network (LPWAN) standards such as LoRa and Sigfox.
[0009] In some examples, the telecommunication network 3102 is a cellularnetwork that implements 3GPP standardized features. Accordingly, the telecommunications network 3102 may support network slicing to provide different logical networks to different devices that are connected to the telecommunication network 3102. For example, the telecommunications network 3102 may provide Ultra Reliable Low Latency Communication (URLLC) services to some UEs, while providing Enhanced Mobile Broadband (eMBB) services to other UEs, and / or Massive Machine Type Communication (mMTC) / Massive IoT services to yet further UEs.
[00010] In some examples, the UEs 3112 are configured to transmit and / or receiveinformation without direct human interaction. For instance, a UE may be designed to transmit information to the access network 3104 on a predetermined schedule, when triggered by an internal or external event, or in response to requests from the access network 3104. Additionally, a UE may be configured for operating in single- or multi-RAT or multi-standard mode. For example, a UE may operate with any one or combination of Wi-Fi, NR (New Radio) and LTE, i.e. being configured for multi-radio dual connectivity (MR-DC), such as E-UTRAN (Evolved-UMTS Terrestrial Radio Access Network) New Radio – Dual Connectivity (EN-DC).
[00011] In the example, the hub 3114 communicates with the access network 3104to facilitate indirect communication between one or more UEs (e.g., UE 3112c and / or 3112d) and network nodes (e.g., network node 3110b). In some examples, the hub 3114 may be a controller, router, content source and analytics, or any of the other communication devices described herein regarding UEs. For example, the hub 3114 may be a broadband router enabling access to the core network 3106 for the UEs. As another example, the hub 3114 may be a controller that sends commands or instructions to one or more actuators in the UEs. Commands or instructions may be received from the UEs, network nodes 3110, or by executable code, script, process, or other instructions in the hub 3114. As another example, the hub 3114 may be a data collector that acts as temporary storage for UE data and, in some embodiments, may perform analysis or other processing of the data. As another example, the hub 3114 may be a content source. For example, for a UE that is a VR device, display, loudspeaker, or other media delivery device, the hub 3114 may retrieve VR assets, video, audio, or other media or data related to sensory information via anetwork node, which the hub 3114 then provides to the UE either directly, after performing local processing, and / or after adding additional local content. In still another example, the hub 3114 acts as a proxy server or orchestrator for the UEs, in particular if one or more of the UEs are low energy IoT devices.
[00012] The hub 3114 may have a constant / persistent or intermittent connection tothe network node 3110b. The hub 3114 may also allow for a different communication scheme and / or schedule between the hub 3114 and UEs (e.g., UE 3112c and / or 3112d), and between the hub 3114 and the core network 3106. In other examples, the hub 3114 is connected to the core network 3106 and / or one or more UEs via a wired connection. Moreover, the hub 3114 may be configured to connect to an M2M service provider over the access network 3104 and / or to another UE over a direct connection. In some scenarios, UEs may establish a wireless connection with the network nodes 3110 while still connected via the hub 3114 via a wired or wireless connection. In some embodiments, the hub 3114 may be a dedicated hub – that is, a hub whose primary function is to route communications to / from the UEs from / to the network node 3110b. In other embodiments, the hub 3114 may be a non-dedicated hub – that is, a device which is capable of operating to route communications between the UEs and network node 3110b, but which is additionally capable of operating as a communication start and / or end point for certain data channels.
[00013] Figure 13 shows a UE 3200 in accordance with some embodiments. TheUE 3200 presents additional details of some embodiments of the UE 3112 of Figure 12. As used herein, a UE refers to a device capable, configured, arranged and / or operable to communicate wirelessly with network nodes and / or other UEs. Examples of a UE include, but are not limited to, a smart phone, mobile phone, cell phone, voice over IP (VoIP) phone, wireless local loop phone, desktop computer, personal digital assistant (PDA), wireless cameras, gaming console or device, music storage / playback device, wearable terminal device, wireless endpoint, mobile station, tablet, laptop, laptop-embedded equipment (LEE), laptop-mounted equipment (LME), an Augmented Reality (AR) or Virtual Reality (VR) device, wireless customer-premise equipment (CPE), vehicle, vehicle-mounted or vehicle embedded / integrated wireless device, etc. Other examples include any UE identified by the 3rd Generation Partnership Project (3GPP), including a narrow band internet of things (NB-IoT) UE, a machine type communication (MTC) UE, and / or an enhanced MTC (eMTC) UE.
[0014] A UE may support device-to-device (D2D) communication, for example byimplementing a 3GPP standard for sidelink communication, Dedicated Short-Range Communication (DSRC), vehicle-to-vehicle (V2V), vehicle-to-infrastructure (V2I), or vehicle-to- everything (V2X). In other examples, a UE may not necessarily have a user in the sense of a human user who owns and / or operates the relevant device. Instead, a UE may represent a device that is intended for sale to, or operation by, a human user but which may not, or which may not initially, be associated with a specific human user (e.g., a smart sprinkler controller). Alternatively, a UE may represent a device that is not intended for sale to, or operation by, an end user but which may be associated with or operated for the benefit of a user (e.g., a smart power meter).
[00015] The UE 3200 includes processing circuitry 3202 that is operatively coupledvia a bus 3204 to an input / output interface 3206, a power source 3208, a memory 3210, a communication interface 3212, and / or any other component, or any combination thereof. Certain UEs may utilize all or a subset of the components shown in Figure 13. The level of integration between the components may vary from one UE to another UE. Further, certain UEs may contain multiple instances of a component, such as multiple processors, memories, transceivers, transmitters, receivers, etc.
[00016] The processing circuitry 3202 is configured to process instructions and dataand may be configured to implement any sequential state machine operative to execute instructions stored as machine-readable computer programs in the memory 3210. The processing circuitry 3202 may be implemented as one or more hardware-implemented state machines (e.g., in discrete logic, field-programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), etc.); programmable logic together with appropriate firmware; one or more stored computer programs, general-purpose processors, such as a microprocessor or digital signal processor (DSP), together with appropriate software; or any combination of the above. For example, the processing circuitry 3202 may include multiple central processing units (CPUs).
[00017] In the example, the input / output interface 3206 may be configured toprovide an interface or interfaces to an input device, output device, or one or more input and / or output devices. Examples of an output device include a speaker, a sound card, a video card, a display, a monitor, a printer, an actuator, an emitter, a smartcard, another output device, or any combination thereof. An input device may allow a user to capture information into the UE 3200. Examples of an input device include a touch-sensitive or presence-sensitive display, a camera (e.g.,a digital camera, a digital video camera, a web camera, etc.), a microphone, a sensor, a mouse, a trackball, a directional pad, a trackpad, a scroll wheel, a smartcard, and the like. The presence- sensitive display may include a capacitive or resistive touch sensor to sense input from a user. A sensor may be, for instance, an accelerometer, a gyroscope, a tilt sensor, a force sensor, a magnetometer, an optical sensor, a proximity sensor, a biometric sensor, etc., or any combination thereof. An output device may use the same type of interface port as an input device. For example, a Universal Serial Bus (USB) port may be used to provide an input device and an output device.
[00018] In some embodiments, the power source 3208 is structured as a battery orbattery pack. Other types of power sources, such as an external power source (e.g., an electricity outlet), photovoltaic device, or power cell, may be used. The power source 3208 may further include power circuitry for delivering power from the power source 3208 itself, and / or an external power source, to the various parts of the UE 3200 via input circuitry or an interface such as an electrical power cable. Delivering power may be, for example, for charging of the power source 3208. Power circuitry may perform any formatting, converting, or other modification to the power from the power source 3208 to make the power suitable for the respective components of the UE 3200 to which power is supplied.
[00019] The memory 3210 may be or be configured to include memory such asrandom-access memory (RAM), read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), magnetic disks, optical disks, hard disks, removable cartridges, flash drives, and so forth. In one example, the memory 3210 includes one or more application programs 3214, such as an operating system, web browser application, a widget, gadget engine, or other application, and corresponding data 3216. The memory 3210 may store, for use by the UE 3200, any of a variety of various operating systems or combinations of operating systems.
[00020] The memory 3210 may be configured to include a number of physical driveunits, such as redundant array of independent disks (RAID), flash memory, USB flash drive, external hard disk drive, thumb drive, pen drive, key drive, high-density digital versatile disc (HD- DVD) optical disc drive, internal hard disk drive, Blu-Ray optical disc drive, holographic digital data storage (HDDS) optical disc drive, external mini-dual in-line memory module (DIMM), synchronous dynamic random access memory (SDRAM), external micro-DIMM SDRAM,smartcard memory such as tamper resistant module in the form of a universal integrated circuit card (UICC) including one or more subscriber identity modules (SIMs), such as a USIM and / or ISIM, other memory, or any combination thereof. The UICC may for example be an embedded UICC (eUICC), integrated UICC (iUICC) or a removable UICC commonly known as ‘SIM card.’ The memory 3210 may allow the UE 3200 to access instructions, application programs and the like, stored on transitory or non-transitory memory media, to off-load data, or to upload data. An article of manufacture, such as one utilizing a communication system may be tangibly embodied as or in the memory 3210, which may be or comprise a device-readable storage medium.
[00021] The processing circuitry 3202 may be configured to communicate with anaccess network or other network using the communication interface 3212. The communication interface 3212 may comprise one or more communication subsystems and may include or be communicatively coupled to an antenna 3222. The communication interface 3212 may include one or more transceivers used to communicate, such as by communicating with one or more remote transceivers of another device capable of wireless communication (e.g., another UE or a network node in an access network). Each transceiver may include a transmitter 3218 and / or a receiver 3220 appropriate to provide network communications (e.g., optical, electrical, frequency allocations, and so forth). Moreover, the transmitter 3218 and receiver 3220 may be coupled to one or more antennas (e.g., antenna 3222) and may share circuit components, software or firmware, or alternatively be implemented separately.
[00022] In the illustrated embodiment, communication functions of thecommunication interface 3212 may include cellular communication, Wi-Fi communication, LPWAN communication, data communication, voice communication, multimedia communication, short-range communications such as Bluetooth, near-field communication, location-based communication such as the use of the global positioning system (GPS) to determine a location, another like communication function, or any combination thereof. Communications may be implemented in according to one or more communication protocols and / or standards, such as IEEE 802.11, Code Division Multiplexing Access (CDMA), Wideband Code Division Multiple Access (WCDMA), GSM, LTE, New Radio (NR), UMTS, WiMax, Ethernet, transmission control protocol / internet protocol (TCP / IP), synchronous optical networking (SONET), Asynchronous Transfer Mode (ATM), QUIC, Hypertext Transfer Protocol (HTTP), and so forth.
[0023] Regardless of the type of sensor, a UE may provide an output of datacaptured by its sensors, through its communication interface 3212, via a wireless connection to a network node. Data captured by sensors of a UE can be communicated through a wireless connection to a network node via another UE. The output may be periodic (e.g., once every 15 minutes if it reports the sensed temperature), random (e.g., to even out the load from reporting from several sensors), in response to a triggering event (e.g., when moisture is detected an alert is sent), in response to a request (e.g., a user initiated request), or a continuous stream (e.g., a live video feed of a patient).
[00024] As another example, a UE comprises an actuator, a motor, or a switch,related to a communication interface configured to receive wireless input from a network node via a wireless connection. In response to the received wireless input the states of the actuator, the motor, or the switch may change. For example, the UE may comprise a motor that adjusts the control surfaces or rotors of a drone in flight according to the received input or to a robotic arm performing a medical procedure according to the received input.
[00025] A UE, when in the form of an Internet of Things (IoT) device, may be adevice for use in one or more application domains, these domains comprising, but not limited to, city wearable technology, extended industrial application and healthcare. Non-limiting examples of such an IoT device are a device which is or which is embedded in: a connected refrigerator or freezer, a TV, a connected lighting device, an electricity meter, a robot vacuum cleaner, a voice controlled smart speaker, a home security camera, a motion detector, a thermostat, a smoke detector, a door / window sensor, a flood / moisture sensor, an electrical door lock, a connected doorbell, an air conditioning system like a heat pump, an autonomous vehicle, a surveillance system, a weather monitoring device, a vehicle parking monitoring device, an electric vehicle charging station, a smart watch, a fitness tracker, a wearable for tactile augmentation or sensory enhancement, a water sprinkler, an animal- or item-tracking device, a sensor for monitoring a plant or animal, an industrial robot, an Unmanned Aerial Vehicle (UAV), and any kind of medical device, like a heart rate monitor or a remote controlled surgical robot. A UE in the form of an IoT device comprises circuitry and / or software in dependence of the intended application of the IoT device in addition to other components as described in relation to the UE 3200 shown in Figure 13.
[0026] As yet another specific example, in an IoT scenario, a UE may represent amachine or other device that performs monitoring and / or measurements and transmits the results of such monitoring and / or measurements to another UE and / or a network node. The UE may in this case be an M2M device, which may in a 3GPP context be referred to as an MTC device. As one particular example, the UE may implement the 3GPP NB-IoT standard. In other scenarios, a UE may represent a vehicle, such as a car, a bus, a truck, a ship and an airplane, or other equipment that is capable of monitoring and / or reporting on its operational status or other functions associated with its operation.
[00027] In practice, any number of UEs may be used together with respect to a singleuse case. For example, a first UE might be or be integrated in a drone and provide the drone’s speed information (obtained through a speed sensor) to a second UE that is a remote controller operating the drone. When the user makes changes from the remote controller, the first UE may adjust the throttle on the drone (e.g. by controlling an actuator) to increase or decrease the drone’s speed. The first and / or the second UE can also include more than one of the functionalities described above. For example, a UE might comprise the sensor and the actuator, and handle communication of data for both the speed sensor and the actuators.
[00028] Figure 14 shows a network node 3300 in accordance with someembodiments. As used herein, network node refers to equipment capable, configured, arranged and / or operable to communicate directly or indirectly with a UE and / or with other network nodes or equipment, in a telecommunication network. Examples of network nodes include, but are not limited to, access points (APs) (e.g., radio access points), base stations (BSs) (e.g., radio base stations, Node Bs, evolved Node Bs (eNBs) and NR NodeBs (gNBs)), O-RAN nodes or components of an O-RAN node (e.g., O-RU, O-DU, O-CU).
[00029] Base stations may be categorized based on the amount of coverage theyprovide (or, stated differently, their transmit power level) and so, depending on the provided amount of coverage, may be referred to as femto base stations, pico base stations, micro base stations, or macro base stations. A base station may be a relay node or a relay donor node controlling a relay. A network node may also include one or more (or all) parts of a distributed radio base station such as centralized digital units, distributed units (e.g., in an O-RAN access node) and / or remote radio units (RRUs), sometimes referred to as Remote Radio Heads (RRHs). Such remote radio units may or may not be integrated with an antenna as an antenna integratedradio. Parts of a distributed radio base station may also be referred to as nodes in a distributed antenna system (DAS).
[00030] Other examples of network nodes include multiple transmission point(multi-TRP) 5G access nodes, multi-standard radio (MSR) equipment such as MSR BSs, network controllers such as radio network controllers (RNCs) or base station controllers (BSCs), base transceiver stations (BTSs), transmission points, transmission nodes, multi-cell / multicast coordination entities (MCEs), Operation and Maintenance (O&M) nodes, Operations Support System (OSS) nodes, Self-Organizing Network (SON) nodes, positioning nodes (e.g., Evolved Serving Mobile Location Centers (E-SMLCs)), and / or Minimization of Drive Tests (MDTs).
[00031] The network node 3300 includes a processing circuitry 3302, a memory3304, a communication interface 3306, and a power source 3308. The network node 3300 may be composed of multiple physically separate components (e.g., a NodeB component and a RNC component, or a BTS component and a BSC component, etc.), which may each have their own respective components. In certain scenarios in which the network node 3300 comprises multiple separate components (e.g., BTS and BSC components), one or more of the separate components may be shared among several network nodes. For example, a single RNC may control multiple NodeBs. In such a scenario, each unique NodeB and RNC pair may in some instances be considered a single separate network node. In some embodiments, the network node 3300 may be configured to support multiple radio access technologies (RATs). In such embodiments, some components may be duplicated (e.g., separate memory 3304 for different RATs) and some components may be reused (e.g., a same antenna 3310 may be shared by different RATs). The network node 3300 may also include multiple sets of the various illustrated components for different wireless technologies integrated into network node 3300, for example GSM, WCDMA, LTE, NR, WiFi, Zigbee, Z-wave, LoRaWAN, Radio Frequency Identification (RFID) or Bluetooth wireless technologies. These wireless technologies may be integrated into the same or different chip or set of chips and other components within network node 3300.
[00032] The processing circuitry 3302 may comprise a combination of one or moreof a microprocessor, controller, microcontroller, central processing unit, digital signal processor, application-specific integrated circuit, field programmable gate array, or any other suitable computing device, resource, or combination of hardware, software and / or encoded logic operableto provide, either alone or in conjunction with other network node 3300 components, such as the memory 3304, to provide network node 3300 functionality.
[00033] In some embodiments, the processing circuitry 3302 includes a system on achip (SOC). In some embodiments, the processing circuitry 3302 includes one or more of radio frequency (RF) transceiver circuitry 3312 and baseband processing circuitry 3314. In some embodiments, the radio frequency (RF) transceiver circuitry 3312 and the baseband processing circuitry 3314 may be on separate chips (or sets of chips), boards, or units, such as radio units and digital units. In alternative embodiments, part or all of RF transceiver circuitry 3312 and baseband processing circuitry 3314 may be on the same chip or set of chips, boards, or units.
[00034] The memory 3304 may comprise any form of volatile or non-volatilecomputer-readable memory including, without limitation, persistent storage, solid-state memory, remotely mounted memory, magnetic media, optical media, random access memory (RAM), read- only memory (ROM), mass storage media (for example, a hard disk), removable storage media (for example, a flash drive, a Compact Disk (CD) or a Digital Video Disk (DVD)), and / or any other volatile or non-volatile, non-transitory device-readable and / or computer-executable memory devices that store information, data, and / or instructions that may be used by the processing circuitry 3302. The memory 3304 may store any suitable instructions, data, or information, including a computer program, software, an application including one or more of logic, rules, code, tables, and / or other instructions capable of being executed by the processing circuitry 3302 and utilized by the network node 3300. The memory 3304 may be used to store any calculations made by the processing circuitry 3302 and / or any data received via the communication interface 3306. In some embodiments, the processing circuitry 3302 and memory 3304 is integrated.
[00035] The communication interface 3306 is used in wired or wirelesscommunication of signaling and / or data between a network node, access network, and / or UE. As illustrated, the communication interface 3306 comprises port(s) / terminal(s) 3316 to send and receive data, for example to and from a network over a wired connection. The communication interface 3306 also includes radio front-end circuitry 3318 that may be coupled to, or in certain embodiments a part of, the antenna 3310. Radio front-end circuitry 3318 comprises filters 3320 and amplifiers 3322. The radio front-end circuitry 3318 may be connected to an antenna 3310 and processing circuitry 3302. The radio front-end circuitry may be configured to condition signals communicated between antenna 3310 and processing circuitry 3302. The radio front-end circuitry3318 may receive digital data that is to be sent out to other network nodes or UEs via a wireless connection. The radio front-end circuitry 3318 may convert the digital data into a radio signal having the appropriate channel and bandwidth parameters using a combination of filters 3320 and / or amplifiers 3322. The radio signal may then be transmitted via the antenna 3310. Similarly, when receiving data, the antenna 3310 may collect radio signals which are then converted into digital data by the radio front-end circuitry 3318. The digital data may be passed to the processing circuitry 3302. In other embodiments, the communication interface may comprise different components and / or different combinations of components.
[00036] In certain alternative embodiments, the network node 3300 does not includeseparate radio front-end circuitry 3318, instead, the processing circuitry 3302 includes radio front- end circuitry and is connected to the antenna 3310. Similarly, in some embodiments, all or some of the RF transceiver circuitry 3312 is part of the communication interface 3306. In still other embodiments, the communication interface 3306 includes one or more ports or terminals 3316, the radio front-end circuitry 3318, and the RF transceiver circuitry 3312, as part of a radio unit (not shown), and the communication interface 3306 communicates with the baseband processing circuitry 3314, which is part of a digital unit (not shown).
[00037] The antenna 3310 may include one or more antennas, or antenna arrays,configured to send and / or receive wireless signals. The antenna 3310 may be coupled to the radio front-end circuitry 3318 and may be any type of antenna capable of transmitting and receiving data and / or signals wirelessly. In certain embodiments, the antenna 3310 is separate from the network node 3300 and connectable to the network node 3300 through an interface or port.
[00038] The antenna 3310, communication interface 3306, and / or the processingcircuitry 3302 may be configured to perform any receiving operations and / or certain obtaining operations described herein as being performed by the network node. Any information, data and / or signals may be received from a UE, another network node and / or any other network equipment. Similarly, the antenna 3310, the communication interface 3306, and / or the processing circuitry 3302 may be configured to perform any transmitting operations described herein as being performed by the network node. Any information, data and / or signals may be transmitted to a UE, another network node and / or any other network equipment.
[00039] The power source 3308 provides power to the various components ofnetwork node 3300 in a form suitable for the respective components (e.g., at a voltage and currentlevel needed for each respective component). The power source 3308 may further comprise, or be coupled to, power management circuitry to supply the components of the network node 3300 with power for performing the functionality described herein. For example, the network node 3300 may be connectable to an external power source (e.g., the power grid, an electricity outlet) via an input circuitry or interface such as an electrical cable, whereby the external power source supplies power to power circuitry of the power source 3308. As a further example, the power source 3308 may comprise a source of power in the form of a battery or battery pack which is connected to, or integrated in, power circuitry. The battery may provide backup power should the external power source fail.
[00040] Embodiments of the network node 3300 may include additionalcomponents beyond those shown in Figure 14 for providing certain aspects of the network node’s functionality, including any of the functionality described herein and / or any functionality necessary to support the subject matter described herein. For example, the network node 3300 may include user interface equipment to allow input of information into the network node 3300 and to allow output of information from the network node 3300. This may allow a user to perform diagnostic, maintenance, repair, and other administrative functions for the network node 3300. In some embodiments providing a core network node, such as core network node 108 of FIG. 31, some components, such as the radio front-end circuitry 3318 and the RF transceiver circuitry 3312 may be omitted.
[00041] Figure 15 is a block diagram illustrating a virtualization environment 3400in which functions implemented by some embodiments may be virtualized. In the present context, virtualizing means creating virtual versions of apparatuses or devices which may include virtualizing hardware platforms, storage devices and networking resources. As used herein, virtualization can be applied to any device described herein, or components thereof, and relates to an implementation in which at least a portion of the functionality is implemented as one or more virtual components. Some or all of the functions described herein may be implemented as virtual components executed by one or more virtual machines (VMs) implemented in one or more virtual environments 3400 hosted by one or more of hardware nodes, such as a hardware computing device that operates as a network node, UE, core network node, or host. Further, in embodiments in which the virtual node does not require radio connectivity (e.g., a core network node or host), then the node may be entirely virtualized. In some embodiments, the virtualization environment3400 includes components defined by the O-RAN Alliance, such as an O-Cloud environment orchestrated by a Service Management and Orchestration Framework via an O-2 interface. Virtualization may facilitate distributed implementations of a network node, UE, core network node, or host.
[00042] Applications 3402 (which may alternatively be called software instances,virtual appliances, network functions, virtual nodes, virtual network functions, etc.) are run in the virtualization environment 3400 to implement some of the features, functions, and / or benefits of some of the embodiments disclosed herein.
[00043] Hardware 3404 includes processing circuitry, memory that stores softwareand / or instructions executable by hardware processing circuitry, and / or other hardware devices as described herein, such as a network interface, input / output interface, and so forth. Software may be executed by the processing circuitry to instantiate one or more virtualization layers 3406 (also referred to as hypervisors or virtual machine monitors (VMMs)), provide VMs 3408a and 3408b (one or more of which may be generally referred to as VMs 3408), and / or perform any of the functions, features and / or benefits described in relation with some embodiments described herein. The virtualization layer 3406 may present a virtual operating platform that appears like networking hardware to the VMs 3408.
[00044] The VMs 3408 comprise virtual processing, virtual memory, virtualnetworking or interface and virtual storage, and may be run by a corresponding virtualization layer 3406. Different embodiments of the instance of a virtual appliance 3402 may be implemented on one or more of VMs 3408, and the implementations may be made in different ways. Virtualization of the hardware is in some contexts referred to as network function virtualization (NFV). NFV may be used to consolidate many network equipment types onto industry standard high volume server hardware, physical switches, and physical storage, which can be located in data centers, and customer premise equipment.
[00045] In the context of NFV, a VM 3408 may be a software implementation of aphysical machine that runs programs as if they were executing on a physical, non-virtualized machine. Each of the VMs 3408, and that part of hardware 3404 that executes that VM, be it hardware dedicated to that VM and / or hardware shared by that VM with others of the VMs, forms separate virtual network elements. Still in the context of NFV, a virtual network function isresponsible for handling specific network functions that run in one or more VMs 3408 on top of the hardware 3404 and corresponds to the application 3402.
[00046] Hardware 3404 may be implemented in a standalone network node withgeneric or specific components. Hardware 3404 may implement some functions via virtualization. Alternatively, hardware 3404 may be part of a larger cluster of hardware (e.g. such as in a data center or CPE) where many hardware nodes work together and are managed via management and orchestration 3410, which, among others, oversees lifecycle management of applications 3402. In some embodiments, hardware 3404 is coupled to one or more radio units that each include one or more transmitters and one or more receivers that may be coupled to one or more antennas. Radio units may communicate directly with other hardware nodes via one or more appropriate network interfaces and may be used in combination with the virtual components to provide a virtual node with radio capabilities, such as a radio access node or a base station. In some embodiments, some signaling can be provided with the use of a control system 3412 which may alternatively be used for communication between hardware nodes and radio units.
[00047] Although the computing devices described herein (e.g., UEs, networknodes) may include the illustrated combination of hardware components, other embodiments may comprise computing devices with different combinations of components. It is to be understood that these computing devices may comprise any suitable combination of hardware and / or software needed to perform the tasks, features, functions and methods disclosed herein. Determining, calculating, obtaining or similar operations described herein may be performed by processing circuitry, which may process information by, for example, converting the obtained information into other information, comparing the obtained information or converted information to information stored in the network node, and / or performing one or more operations based on the obtained information or converted information, and as a result of said processing making a determination. Moreover, while components are depicted as single boxes located within a larger box, or nested within multiple boxes, in practice, computing devices may comprise multiple different physical components that make up a single illustrated component, and functionality may be partitioned between separate components. For example, a communication interface may be configured to include any of the components described herein, and / or the functionality of the components may be partitioned between the processing circuitry and the communication interface. In another example, non-computationally intensive functions of any of such components may beimplemented in software or firmware and computationally intensive functions may be implemented in hardware.
[00048] In certain embodiments, some or all of the functionality described hereinmay be provided by processing circuitry executing instructions stored on in memory, which in certain embodiments may be a computer program product in the form of a non-transitory computer-readable storage medium. In alternative embodiments, some or all of the functionality may be provided by the processing circuitry without executing instructions stored on a separate or discrete device-readable storage medium, such as in a hard-wired manner. In any of those particular embodiments, whether executing instructions stored on a non-transitory computer- readable storage medium or not, the processing circuitry can be configured to perform the described functionality. The benefits provided by such functionality are not limited to the processing circuitry alone or to other components of the computing device, but are enjoyed by the computing device as a whole, and / or by end users and a wireless network generally.
Claims
CLAIMS What is claimed is:
1. A method (1400) performed by a cloud control plane (400) comprising a service manager (420) to deploy and chain microservices, the method comprising: annotating (1410) one or more microservices capable of providing one or more services with one or more attributes of the one or more microservices, wherein the one or more microservices are deployed at one or more servers (425, 455, 475) serving the cloud control plane, wherein each of the one or more servers comprises a node agent (430, 460, 480); transmitting (1420), by the cloud control plane to the service manager, a scheduling request for the one or more microservices; transmitting (1430), to the service manager, one or more parameters defining the one or more microservices and / or one or more servers; creating (1440) one or more rankings of the one or more microservices, each of the one or more rankings based on the one or more parameters; receiving (1450), from the service manager, a suggested microservice and / or suggested server from the one or more microservices and / or one or more servers, based at least in part on the scheduling request and the one or more rankings; scheduling (1460) the suggested microservice and / or suggested server for the scheduling request; receiving (1470), by the service manager from a node agent, a runtime request for the one or more services; and communicating (1480), to the node agent, to map communications for the suggested server and / or suggested microservice to provide the one or more services of the runtime request.
2. The method of claim 1, wherein the one or more attributes comprise at least one of: programming language compatibility; application programming interface, API, version compatibility, main services offered by the microservice; microservice exposed loggingfunctionality; stats collection capabilities; requirements; key performance indicators, KPI, requirements; an endianness of a server.
3. The method of claim 1 or 2, wherein the annotating is provided by a user.
4. The method of any of claims 1 to 3, wherein the one or more parameters comprise at least one of: cluster topology; existing microservices deployment; capabilities; functionalities; current utilization metrics; operator requirements; physical hardware topology; physical hardware identification; interconnection data; average response time; number of active connections; bandwidth data.
5. The method of any of claims 1 to 4, wherein when an application begins using the one or more services, the node agent queries the service manager in response to the first packet.
6. The method of any of claims 1 to 5, wherein the runtime request is initiated by the one or more microservices.
7. The method of any of claims 1 to 6, wherein the scheduling request is initiated by an application requesting the one or more services 8. A method (1600) performed by a service manager (420) to deploy and chain microservices amongst one or more servers (425, 455, 475) comprising one or more microservices (492) configured to provide one or more services, the method comprising: receiving (1610) one or more user requirements; receiving (1620) one or more parameters of the one or more servers and / or one or more microservices; receiving (1630) a request for the one or more services to support one or more applications; identifying (1640), based at least in part on the one or more user requirements and the one or more parameters, one or more selected microservices and / or one or more selected servers to provide the one or more services; andtransmitting (1650) the identification of the one or more selected microservices and / or one or more selected servers to an application scheduler.
9. The method of claim 8, wherein the one or more user requirements comprise one or more of: one or more application requirements; one or more key performance indicators, KPIs; one or more required programming languages.
10. The method of claim 8 or 9, wherein the one or more parameters comprise one or more of: one or more hardware topologies of the one or more servers and / or one or more microservices; one or more existing microservice deployments; one or more utilization metrics; one or more cloud operator’s requirements; one or more supported programming languages; and one or more physical locations 11. The method of any of claims 8 to 10, further comprising, when the one or more applications begin to use the one or more services, receiving a first packet from the one or more applications.
12. The method of any of claims 8 to 11, further comprising, transmitting the identification to a node agent comprising the one or more selected servers for the node agent to map communications for the one or more services.
13. The method of any of claims 8 to 12, wherein the identifying comprises selecting the one or more selected microservices and / or one or more selected servers because one or more existing microservice deployments are compatible with the one or more services.
14. A service manager (420) to deploy and chain microservices amongst one or more servers (425, 455, 475) providing one or more microservices (492) configured to provide one or more services, the service manager comprising: a processor; and a memory containing instructions executable by the processor whereby the service manager is operative to: annotate (1410) the one or more microservices with one or more attributes;receive (1420), from the cloud control plane, a scheduling request for the one or more microservices; transmit (1430), to the cloud control plane, one or more parameters defining the one or more microservices and / or one or more servers, wherein each of the one or more servers comprises a node agent (430, 460, 480); create (1440) one or more rankings of the one or more microservices, each of the one or more rankings based on the one or more parameters; transmit (1450), to the cloud control plane, a suggested microservice and / or suggested server from the one or more microservices and / or one or more servers, based at least in part on the scheduling request and the one or more rankings; transmitting (1460), a suggested microservice and / or suggested server for the scheduling request; receive (1470), from a node agent, a runtime request for the one or more services; and communicate (1480), to the node agent, to map communications for the suggested server and / or suggested microservice to provide the one or more services of the runtime request.
15. A service manager (420) to deploy and chain microservices amongst one or more servers (425, 455, 475) providing one or more microservices (492) configured to provide one or more services, the service manager comprising: a service information repository (220) configured to store static and dynamic information about one or more deployed microservices being provided by the one or more microservices; an application hint processor (260) configured to generate and process application meta data received from a user related to an application requesting the one or more microservices, and further configured to provide an application specific hint to the service information repository for use in microservice placement when scheduling the one or more microservices; a service logical grouping generator (240) configured to generate a service manifest through grouping of existing exposed services offered by the one or more microservices based on a functionality requested by the application; anda service broker (280) configured to pair and connect the application with a suitable one of the one or more microservices based at least in part on the static and dynamic information available in the service information repository.
16. The service manager of claim 15, wherein the static information comprises at least one of: workload specific information; architecture; service type; binary coding language.
17. The service manager of claim 15 or 16, wherein the dynamic information is related to at least one of: active connections parameters; current resource utilization.
18. The service manager of any of claims 15 to 17, wherein the application meta data comprises one or more of: language details for building application binaries; hardware architecture; encoding formats for message exchange; user provided rank of the application meta data.
19. The service manager of any of claims 15 to 18, wherein the service broker is configured to analyze the application meta data, the static and dynamic information, and cloud operator requirements to provide a hint to the application scheduler about the one or more microservices to provision the application.
20. The service manager of any of claims 15 to 19, wherein at runtime, when the application tries to connect to the one or more services offered by the one or more microservices, the service broker identifies the suitable candidate microservice and chains the one or more microservices.
21. A method (1800) performed by a node agent (430, 460, 480) for deploying and chaining one or more microservices, the method comprising: receiving (1810), from a service manager, a request to map communications for a suggested server of one or more servers (425, 455, 475) and / or a suggested microservice of the one or more microservices (490) to provide the one or more services requested by an application; wherein the service manager has performed the steps of; annotating (1410) the one or more microservices capable of providing the one or more services with one or more attributes of the one or more microservices, wherein theone or more microservices are deployed at the one or more servers (425, 455, 475) serving the cloud control plane, wherein each of the one or more servers comprises a node agent (430, 460, 480); transmitting (1420), by the cloud control plane to the service manager, a scheduling request for the one or more microservices; transmitting (1430), to the service manager, one or more parameters defining the one or more microservices and / or the one or more servers; creating (1440) one or more rankings of the one or more microservices, each of the one or more rankings based on the one or more parameters; receiving (1450), from the service manager, a suggested microservice and / or suggested server from the one or more microservices and / or one or more servers, based at least in part on the scheduling request and the one or more rankings; scheduling (1460) the suggested microservice and / or suggested server for the scheduling request; receiving (1470), by the service manager from a node agent, a runtime request for the one or more services; and communicating (1480), to the node agent, to map communications for the suggested server and / or suggested microservice to provide the one or more services of the runtime request.
22. The method of claim 21, further comprising adding the mapping to one or more rules tables.
23. The method of claim 22, wherein the mapping represents a pairing between a first and second microservices so that one or more packets flow between the first and second microservices.
Citation Information
Patent Citations
Data plane optimization for microservices
WO2024142075A1
Optimizing deployment and security of microservices
US20220121470A1