Service placement assistance

By using an internal placement model in the computing device to automatically or assist in allocating network resources, the problem of inefficient resource allocation in the prior art is solved, and efficient and low-cost resource utilization is achieved.

CN119484260APending Publication Date: 2025-02-18HEWLETT PACKARD ENTERPRISE DEV LP
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411548229.9
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2021-08-27
Filing Date
2021-11-18
Publication Date
2025-02-18

AI Technical Summary

Technical Problem

The prior art is difficult to automatically allocate network resources to customer service, resulting in low resource utilization efficiency, high cost, and manual allocation is complex and cumbersome, which can easily lead to resource overload.

Method used

By using internal placement models in computing devices, the customer service model, network service model and network resource model are mapped and transformed, and resources are automatically or auxiliaryly allocated to meet customer service requirements and constraints.

Benefits of technology

Automatic resource allocation is realized, resource utilization efficiency is improved, costs are reduced, resource overload is avoided, and manual allocation process is simplified.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119484260A_ABST
    Figure CN119484260A_ABST
Patent Text Reader

Abstract

Embodiments of the present disclosure relate to service placement assistance. An example computing device is configured to receive an indication of a plurality of resources and an indication of a plurality of customer services from a customer device, each customer service of the plurality of customer services being associated with a corresponding at least one requirement and a corresponding at least one constraint. The computing device is configured to automatically determine, for each requirement and each constraint, whether the requirement or constraint can be satisfied by only a particular resource of the plurality of resources, and based on the determination, allocate at least one resource of the plurality of resources to at least one customer service of the plurality of customer services. The example computing device is configured to, after determination for each requirement and each constraint, provide information to the client device to enable the client device to provision at least one client service.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Related patent applications

[0002] This application is a divisional application of the Chinese invention patent application with application number 202111372267.X, application date November 18, 2021, and invention name “Service Placement Assistance”. Technical Field

[0003] The present disclosure relates to resource allocation, such as resource allocation within a computer network. Background Art

[0004] The network may include a plurality of different network devices configured to provide customer services to customers. Such customer services may include virtual private network services, business engineering services, voice over IP (VoIP) services, video on demand (VOD) services, bulk transport services, walled / open gardens, IP mobility subsystems (IMS) and other mobility services, firewall services, and Internet services to clients of the service provider network, and routing packet flows from source devices to destination devices. In order to provide such customer services, network devices must be provisioned to support such services. It is extremely difficult to manually provision such network devices to support such services in large networks without performing such provisioning in an inefficient manner that increases customer costs. Summary of the invention

[0005] In general, the present disclosure describes techniques that enable computing devices to automatically allocate resources (such as network resources) to meet or comply with customer service requirements and associated constraints, and / or to assist operators in optimizing resource allocation. Although the techniques of the present disclosure are primarily discussed for example purposes with respect to computer networking, the techniques may be applicable to any field requiring resource allocation, such as manufacturing, distribution of goods or services, and the like.

[0006] Automated service provisioning may be useful for service providers, such as network service providers. However, automated service provisioning may be difficult to implement because each service provider may have very different requirements, including what services they want to provide and how to implement services on their network. Therefore, service provisioning platforms are usually built as disposable customer-specific applications, with almost no chance of being reused for different customers. General products suitable for various customers and services may need to be intensively customized via expensive professional services or system integration projects. Moreover, existing service provisioning platforms have limited capabilities to allocate and manage the assignment of network resources to services to be deployed on the network. Therefore, allocating network resources to customer requirements is a manual process to a large extent.

[0007] Service providers can use any model of network resources and customer service they like, choosing from existing standard models and enhanced models customized to fit their goals. The technology of the present disclosure includes using an internal placement model within a computing device. The computing device can map or convert an instance of a customer service model, an instance of a network service model, and / or an instance of a network resource model to an internal placement model, so that for the purpose of resource allocation, resources and customer service and the associated requirements and constraints represented in the customer service instance, network service instance, and / or network resource instance are represented in the internal placement model. For example, one or more algorithms can receive instances of customer service models, network service models, and / or network resource models as inputs, and map these instances to an internal placement model used by the computing device for allocating resources to customer service requirements. Information related to allocation can be input to one or more algorithms of the computing device to "reverse map" (e.g., convert) the placed services into a form that can be consumed by a client device (e.g., a network controller), such as an instance of a network service model used in a network. In some examples, an instance of a network service model can contain information that enables a client device to supply customer service, such as all information required to supply customer service.

[0008] Additionally, it is difficult to place customer service requirements on network resources because there are constraints on how different combinations of customer service requirements can be satisfied. As a result, the utilization efficiency of service provider resources is relatively low. The present disclosure addresses this problem as a constrained optimization problem, thereby enabling service requirements to be automatically and / or auxiliary placed on resources such as network resources in a manner that best meets the requirements, minimizes interruptions, and relatively efficiently uses network resources. The techniques of the present disclosure can enable service providers to provide more value to their customers at a lower cost because resources can be allocated to be better utilized and operated in a more efficient manner.

[0009] For example, a computing device may receive information indicating a plurality of resources and receive information indicating a plurality of customer services, each associated with at least one requirement and / or at least one constraint. In some examples, the computing device may automatically allocate the plurality of resources to the customer service so that the constraints associated with the customer service are satisfied. In some examples, the computing device may assist a service provider in optimizing the allocation of the plurality of resources of a resource pool to satisfy the constraints associated with the customer service.

[0010] There may be thousands of different possible allocations of resources to customer services, especially if the resources are network resources. Each customer service may have its own requirements. Therefore, given the number of possible allocation permutations to satisfy the requirements and constraints associated with each customer service, manual allocation can be impractical and runs the risk of overloading one or more resources.

[0011] The techniques of the present disclosure may provide technical advantages over current systems. For example, these techniques provide a computing device with an automatic way to allocate or assist in allocating resources to a customer service that includes requirements and may be associated with one or more constraints while avoiding leaving the requirements and constraints unsatisfied. The techniques described herein can be incorporated into practical applications, such as a computing device that obtains an indication of multiple resources and an indication of multiple customer services (each with one or more requirements and / or one or more constraints), and uses the indications to automatically allocate or assist a service provider in allocating resources to the customer service in a manner that satisfies the constraints.

[0012] In one example, a method includes: receiving, by a computing device, indications of multiple resources from a client device, the computing device having one or more processors; receiving, by the computing device, indications of multiple customer services from the client device, each of the multiple customer services being associated with at least one corresponding requirement and at least one corresponding constraint; automatically determining, by the computing device, for each requirement and each constraint, whether the requirement or constraint can be satisfied only by a specific resource among the multiple resources; allocating, by the computing device, at least one resource among the multiple resources to at least one customer service among the multiple customer services based on the determination; and after determining for each requirement and each constraint, providing, by the computing device, information to the client device to enable the client device to supply at least one customer service.

[0013] In another example, a computing device includes: one or more processors; and a non-transitory computer-readable medium having instructions stored thereon, the instructions being used to cause the one or more processors to: receive an indication of a plurality of resources from a client device; receive an indication of a plurality of customer services from the client device, each of the plurality of customer services being associated with at least one corresponding requirement and at least one corresponding constraint; automatically determine for each requirement and each constraint whether the requirement or constraint can be satisfied only by a particular resource among the plurality of resources; allocate at least one of the plurality of resources to at least one customer service among the plurality of customer services based on the determination; and after determining for each requirement and each constraint, provide information to the client device so that the client device can supply at least one customer service.

[0014] In another example, a non-transitory computer-readable medium includes instructions for causing at least one programmable processor to: receive an indication of a plurality of resources from a client device; receive an indication of a plurality of customer services from the client device, each of the plurality of customer services being associated with at least one corresponding requirement and at least one corresponding constraint; automatically determine for each requirement and each constraint whether the requirement or constraint can be satisfied only by a particular resource from the plurality of resources; allocate at least one of the plurality of resources to at least one of the plurality of customer services based on the determination; and after determining for each requirement and each constraint, provide information to the client device so that the client device can supply at least one customer service.

[0015] In one example, a method includes: receiving, by a computing device, an instance of a customer service model representing multiple customer services from a client device, the computing device having one or more processors, each of the multiple customer services being associated with at least one corresponding requirement and at least one corresponding constraint; receiving, by the computing device, an instance of a resource model representing multiple resources from the client device; mapping, by the computing device, the instance of the customer service model and the instance of the resource model to an internal placement model maintained by the computing device; automatically allocating, by the computing device, multiple resources to multiple customer services using the internal placement model, such that the allocation of the multiple resources satisfies at least one requirement and at least one constraint of each of the multiple customer services; generating, by the computing device in response to the allocation, data indicating how the multiple resources are allocated to the multiple customer services; inversely mapping, by the computing device, the data into a format consumable by the client device, the data indicating how the multiple resources are allocated to the multiple resources; and outputting, by the computing device, the inversely mapped data to the client device, the data indicating how the multiple resources are allocated to the multiple customer services.

[0016] In another example, a computing device includes: one or more processors; and a non-transitory computer-readable medium having instructions stored thereon, the instructions being used to cause the one or more processors to: receive from a client device an instance of a customer service model representing a plurality of customer services, each of the plurality of customer services being associated with at least one corresponding requirement and at least one corresponding constraint; receive from the client device an instance of a resource model representing a plurality of resources; map the instance of the customer service model and the instance of the resource model to an internal placement model maintained by the computing device; automatically allocate a plurality of resources to a plurality of customer services using the internal placement model so that the allocation of the plurality of resources satisfies at least one requirement and at least one constraint of each of the plurality of customer services; generate data in response to the allocation, the data indicating how the plurality of resources are allocated to the plurality of customer services; inversely map the data into a format consumable by the client device, the data indicating how the plurality of resources are allocated to the plurality of resources; and output the inversely mapped data to the client device, the data indicating how the plurality of resources are allocated to the plurality of customer services.

[0017] In yet another example, a non-transitory computer-readable medium includes instructions for causing at least one programmable processor to: receive from a client device an instance of a client service model representing a plurality of client services, each of the plurality of client services being associated with at least one corresponding requirement and at least one corresponding constraint; receive from the client device an instance of a resource model representing a plurality of resources; map the instance of the client service model and the instance of the resource model to an internal placement model maintained by a computing device; automatically allocate the plurality of resources to the plurality of client services using the internal placement model so that the allocation of the plurality of resources satisfies at least one requirement and at least one constraint of each of the plurality of client services; generate data in response to the allocation, the data indicating how the plurality of resources are allocated to the plurality of client services; inversely map the data into a format consumable by the client device, the data indicating how the plurality of resources are allocated to the plurality of resources; and output the inversely mapped data to the client device, the data indicating how the plurality of resources are allocated to the plurality of client services.

[0018] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description and drawings, and from the claims. BRIEF DESCRIPTION OF THE DRAWINGS

[0019] Figure 1 is a conceptual diagram illustrating example networks and cloud computing devices in accordance with techniques of this disclosure.

[0020] Figure 2 is a block diagram illustrating an example computing device that may determine placement of customer services on resources in accordance with techniques of this disclosure.

[0021] Figure 3is a conceptual diagram illustrating example mapping and inverse mapping according to techniques of this disclosure.

[0022] Figure 4 is a conceptual diagram illustrating an internal placement model according to the technology of the present disclosure.

[0023] FIG. 5A to FIG. 5B is a conceptual diagram illustrating examples of multiple resources and example placement of some of the multiple resources.

[0024] Figure 6 is a conceptual diagram depicting an example resource tree of a resource pool in accordance with techniques of this disclosure.

[0025] Figure 7 is a conceptual diagram illustrating an example of a layer 3 virtual private network (L3VPN) service order in accordance with techniques of this disclosure.

[0026] Figure 8 is a conceptual diagram illustrating placement options and placement resources according to techniques of this disclosure.

[0027] Fig. 9 is a conceptual diagram depicting an example allocation of resources to customer services to satisfy the associated constraints.

[0028] Fig.10 is a conceptual diagram illustrating an example placement assist technique according to the present disclosure.

[0029] Fig.11 is a flow diagram illustrating an example technique for placing customer service on resources according to the present disclosure.

[0030] Fig.12 is a flow diagram illustrating other example techniques for placing customer service on resources according to the present disclosure. DETAILED DESCRIPTION

[0031] When trying to manually allocate resources (such as network resources) to meet the requirements and constraints associated with customer service, one may be faced with thousands of options for each customer service. The placement choice for each customer service may affect the placement of each subsequent customer service because resources have already been allocated to the previous customer service. Therefore, manual placement may be full of risks because allocating already allocated resources may overload the resources and cause business loss. As mentioned above, manual allocation may be impractical, especially in a network with a large number of network devices, considering the large number of different combinations of potential allocations. Compared with existing systems, the technical advantage of the technology disclosed herein is that the computing device can automatically determine the allocation or auxiliary resource allocation to meet the requirements and constraints associated with customer service and avoid overloading the network device. In addition, the technology disclosed in the present invention can transform data from a form used by a network device (such as a network controller) to a form that can be used by a computing device to determine the allocation, and then transform the data indicating the allocation back into a format that can be consumed by the network device.

[0032] Customer service placement may be a service lifecycle management (SLM) function that allocates resources to meet customer service needs based on requirements and constraints. In the context of computer networks, these resources may include router interfaces of type (e.g., Ethernet, digital subscriber line (DSL), leased line (LL), mobile, etc.), storage (e.g., for routing tables), bandwidth, route distinguishers (which can distinguish a route from another route), route targets, addresses and prefixes, etc. Some examples of constraints include: the customer equipment (CE) access interface type must match the assigned provider edge interface type, the customer site must be located in the same region as the point of presence (POP) where the PE serving the site is located, a pair of customer accesses must be connected to PEs in different points of presence (e.g., for robustness in the presence of network outages), etc. Examples of requirements may include interface type, bandwidth, number of routes that can be supported, and maximum cost.

[0033] Figure 1 1 is a conceptual diagram illustrating an example network and cloud computing devices according to techniques of the present disclosure. Network 120 may be a service provider network that may provide customer services to host devices (such as host device 108) via an access network (such as access network 130). To provide such customer services, network controller 100 may need to provision network resources, such as provider edge routers (PEs), such as PE routers 106A to 106N (hereinafter PE 106), and in some examples, other network devices (not shown). The customer services may be associated with certain requirements, such as interface type, bandwidth, number of supportable routes, and / or maximum cost.

[0034] Administrator 104 can interact with network controller 100 via a user interface to manually provision PE 106 and other network devices to provide such customer services. However, when network 120 includes a large number of network devices and there are a large number of customer services to be placed on the network devices, it may be extremely difficult to determine how to allocate network resources such as PE 106 without overburdening one or more network devices. When network devices are overburdened, network devices may drop services, which may result in customer services not being provided in accordance with the original requirements of the customer services. This may all be further complicated by additional constraints beyond the requirements of the customer services. For example, a constraint may be that the customer service must use two different PEs (e.g., PE 106C and PE 106B are used for redundancy purposes in the event of a failure of the primary PE). Since it is very difficult to manually place services when dealing with thousands of network devices and thousands of customer services with thousands of requirements and thousands of constraints, networks where customer services are manually placed are generally inefficient, resulting in higher costs, because more network resources are required than when customer services are placed on network resources in an automatic or semi-automatic manner (e.g., with the assistance of another computing device).

[0035] To place customer service, the administrator 104 may communicate with the computing device 100 through the network controller 100, such as transmitting a service instance to the computing device 100. The service instance may be a work order for the computing device 100 to determine the placement of customer service on various network resources of the network 120. The service instance may include an instance of a customer service model (customer service instance), an instance of a network service model (network service instance) that may indicate an existing network resource that has been allocated to customer service, and / or an instance of a network resource model (network resource instance) when, for example, there is a new network resource. These models may be unique to the network controller 100, such that they may be different from the models used by another network controller of another network (not shown).

[0036] The computing device 100 may be located in a cloud computing environment, such as a cloud network 110. In some examples, the administrator 104 and the network controller 100 may communicate with the computing device 102 via the network 120 and the PE 106A. In other examples, the administrator 104 and the network controller 100 may communicate with the computing device 102 via another route. The computing device 102 may be configured to receive a service instance, map or convert a customer service instance, a network service instance, and / or a network resource instance to an internal placement model used by the computing device 102.

[0037] In some examples, computing device 102 may automatically place the customer service represented in the customer service instance on the network resource represented in the network service instance or network resource instance. In other examples, administrator 104 may interact with computing device 102 via network controller 100 to manually place the customer service on the network resource. In this case, computing device 102 may be configured to output an indication of any problems that may arise due to the manual placement for display to administrator 104. In other examples, computing device 102 may assist administrator 104 in placing the customer service on the network resource.

[0038] Once computing device 102 has determined to place the customer service represented in the customer service instance to the network resource represented in the network resource instance, computing device 102 can map the updated network service instance to the network service model format used by network controller 100 and transmit the updated network service instance to network controller 100. The updated network service instance may include information related to how the customer service is placed on the network resource. In some examples, the network service instance includes all information required by network controller 100 to provision network resources (such as PE 106) to meet the requirements of the customer service and any associated constraints. In this way, network controller 100 can provision network resources so that the customer service used by host 108 meets any expectations of host 108.

[0039] In some examples, the maximum cost can be a requirement, such as the cost of the service must be less than $400. For example, a cost function for bandwidth can be associated with network elements such as tunnels, peer links, internal routes, and external routes. In examples where cost is a requirement or constraint, computing device 102 can use a cost function to evaluate different ways of placing a customer service. In some aspects, the cost function for a tunnel or internal route can be related to the number of links traversed by the tunnel or internal route, or inversely related to the delay caused by the tunnel or internal route.

[0040] Figure 2 is a block diagram illustrating an example computing device that can determine the placement of customer service on resources according to the techniques of the present disclosure. The computing device 200 can be Figure 1 The computing device 200 receives the information from the network controller 100 ( Figure 1) or a network controller of another network receives the service instances and maps these service instances to the internal placement model of the computing device 200. The computing device 200 places or assists in placing the customer services associated with the service instances on the network resources associated with the network resource instances. The computing device 200 maps the placed customer services to network service instances that can be consumed by the network controller 100 and transmits the network service instances to the network controller 100.

[0041] The computing device 200 may include a control unit 202 coupled to a network interface 220 to communicate with a network controller 100 (eg, Figure 1 ) and other network devices to exchange packets. The network interface 220 can be a network interface configured by the administrator 104 ( Figure 1 ) is an interface for communicating with computing device 200. In some examples, network interface 220 supports three external interfaces for placing services. For example, a first external interface of network interface 220 may be an interface for activating a placement design, which may map an allocated placement to a customer's network and service model. A second external interface of network interface 220 may be a resource interface for managing a resource pool on which customer services may be placed based on the NI. A third external interface of network interface 220 may be an interface for managing service instances placed on network resources in a network resource pool. Network interface 220 may receive customer service instance 216, and may receive and / or output network service instance 218. Customer service instance 216 may be an instance of a customer service model used by a customer to represent a customer service, and network service instance 218 may be an instance of a network service model used by a customer to indicate that network resources are allocated to a customer service.

[0042] The control unit 202 may include one or more processors (not shown). Figure 2 ), which executes software instructions, such as those used to define software or computer programs, stored to a computer-readable storage medium, such as storage device 242, which may be a non-transitory computer-readable medium, including a storage device (e.g., a disk drive or an optical drive) or a memory (such as flash memory or random access memory (RAM)) or any other type of volatile or non-volatile memory, which stores instructions to cause one or more processors to perform the techniques described herein. Alternatively or additionally, the control unit 202 may include dedicated hardware, such as one or more integrated circuits, one or more application-specific integrated circuits (ASICs), one or more application-specific processors (ASSPs), one or more field-programmable gate arrays (FPGAs), or any combination of one or more of the foregoing examples of dedicated hardware, for performing the techniques described herein.

[0043] The control unit 202 provides an operating environment for the placement element 212. The placement element 212 may include a placement calculation engine 214, which may be configured to generate placements of customer services on network resources. In some examples, the placement element 212 or the placement calculation engine 214 may be implemented as one or more processes executed on one or more virtual machines of one or more servers. That is, although generally illustrated and described as being executed on a single computing device 200, various aspects of these components may be delegated to other computing devices.

[0044] The placement calculation engine 214 may include an internal placement model 220. The internal placement model 220 may be a model used internally by the computing device 200 when generating placements of customer services on network resources. The placement calculation engine 214 may also include a design interface 236 and a web user interface 238. The design interface 236 may be configured to accept commands from the administrator 104, such as to activate network and service designs, and cause the placement calculation engine 214 to execute on those commands. The design interface 236 may also be configured to interact with a file system-based design project tool 244, which contains model-based designs that can be activated, created, and tested via the design interface 236. For example, the design interface 236 may read a design project and include functionality for testing the design against an example model instance.

[0045] The service design tool 234 may instantiate a placement service internally, or connect to an external placement service. The service design tool 234 may have a terminal-based user interface, and may also run in a "headless" mode via automated scripts. The service design tool 234 may support exercising all placement service functions based on the designs and sample instances contained in the design project. In some examples, the service design tool 234 may be an executable program that the administrator 104 may use to construct and test the design. For example, the administrator 104 may execute the service design tool 234 to open a project, load a design and a sample network instance, and use the tool to test the design.

[0046] The administrator 104 can use the service design tool 234 to open the project and test the service design in conjunction with the network design to ensure that the sample service order is placed correctly and the network resources are allocated as expected. After placing the design, the administrator 104 can add insight scripts and active assurance monitoring artifacts to the design project to test and monitor the running instance of the service.

[0047] The administrator 104 may be responsible for activating and modifying the network and service designs determined by the placement calculation engine 214. For example, the administrator 104 may upload a network design and upload a service design (e.g., an instance of a network service model and an instance of a customer service model) with a design project as input, both of which may call the design interface 236 to activate the design in a running placement service.

[0048] The web user interface 238 can be configured to provide a web-based interface, which may include graphical user interface components, text-based components, etc., to facilitate the administrator 104 to interact with the placement calculation engine 214 via the Internet. In some examples, the web user interface 238 can use the placement interface 250 to update the service instances under construction in the work order to test the feasibility of the placement and report to the administrator 104 the remaining available options regarding the customer requirements or constraints contained in the work order.

[0049] The placement calculation engine 214 may also include a network resource interface 254 , which may be configured to update a pool of network resources, such as when a work order includes an instance of a network resource model.

[0050] In some examples, computing device 200 may include order manager 248. Order manager 248 may orchestrate the construction and execution of work orders, such as service instances, to prepare and provide network services. Work orders may flow through a control graph of work items that computing device 200 may process with the work orders, which may include receiving inputs from storage 242 and providing outputs to storage 242. In some examples, computing device 200 may include a workflow manager interface on Argo that supports launching and monitoring the execution of workflows.

[0051] In some examples, computing device 200 is a cloud computing device, and placement element 212 is a stateful component running in a highly available cloud environment. Thus, in some examples, computing device 200 may include a health check interface 222 configured to check the health of placement elements and facilitate selection of a leader, as the cloud environment may manage scaling by creating placement element replicas and removing unhealthy placement elements.

[0052] Placement element 212 can meet other observability requirements as a client of tracing, metrics, and log services available in the cloud deployment environment. In some examples, the placement is a cloud microservices software development kit (SDK) application, so its tracing, metrics, logs, configuration and other services are implemented via the SDK's framework.

[0053] Designers can add service design elements to design projects, including CSMs, NSMs, transformation templates, and service order examples for testing purposes. Specifically for placement service design, designers can add selectors and transformers needed to adapt placement to the NM, CSM, and NSM used.

[0054] In some examples, placement calculation engine 214 includes artificial intelligence (AI) algorithm 252, which can be trained to generate effective placement of customer service on network resources. For example, AI algorithm 252 can receive evaluation criteria (e.g., from Figure 1 The AI ​​algorithm 252 may determine the placement of services to optimize the evaluation criteria. In another example, it may be necessary to move some services to free up resources for new services with more specific requirements, but there is some risk of interruption of the moving services. The AI ​​algorithm 252 may determine the movement of services that can minimize interruptions. In some examples, the AI ​​algorithm 252 may be a constraint-based branch and bound optimization algorithm. The AI ​​algorithm 252 may be trained on computationally expensive good test examples to improve and / or accelerate the performance of new placement requests.

[0055] Figure 3 is a conceptual diagram illustrating example mapping and inverse mapping according to techniques of this disclosure. Figure 3 Example classes for mapping and inverse mapping may be represented. The network controller 300 may be Figure 1 100. The network controller 300 may include a customer service model 304, a network resource model 306, and a network service model 308. The customer service model 304 may be a representation of a customer service used by a customer running the network controller 300. The customer service model 304 may include a customer service model element 310, which may include objects representing requirements and / or constraints for the customer service. The network resource model 306 may be a representation of network resources of a network that the network controller 300 may manage. The network resource model 306 may include a network resource model element 312, which may include objects representing available resources in a customer network. The network service model 308 may be a representation of customer services that have been placed on network resources. The administrator 104( Figure 1 ) can transmit a customer service model 304 and instances of resource models representing resources (such as a network service model 308 and / or a network resource model 306) to a computing device 302 so that the computing device 302 can place the customer service associated with the customer service model 304 on the network resources associated with the network resource model 306 or the network service model 308 in view of the requirements and constraints associated with the customer service.

[0056] Computing device 302 may map instances of customer service model 304, network resource model 306, and / or network service model 308 into internal placement model 320. Internal placement model 320 may be Figure 2 The customer service model 304, the network resource model 306, and the network service model 308 may be customized models used by a customer operating the network controller 300. The internal placement model 320 may include a customer service model 314 and a network resource model 316, which may be represented in a manner different from the customer service model 304 and the network resource model 316 of the network controller 300. For example, the customer service model 314 may identify a customer 318 (e.g., a customer operating the network controller 300) on which a service instance 322 of a service model 326 is running. The customer service model 314 may include a customer element 324 that may have requirements 330. These requirements 330 may also include or be associated with constraints 328 that may need to be satisfied in order to provide the desired customer service.

[0057] Network resource model 316 may include resources 332 of resource pool 334. Each resource in resources 332 may be used or may be idle. When computing device 302 places a resource in resources 332 to satisfy a requirement in requirements 330 or a constraint in constraints 328, the resource may be said to be used. Unused resources may be said to be idle. Some resources of network resource model 316 may be network elements 336, such as routers, switches, interfaces, etc.

[0058] For example, a customer element may represent a service object representing a plurality of customer services. In some examples, each of the plurality of customer services is associated with at least one requirement and at least one constraint. In some examples, requirement 330 may include an interface type, bandwidth, number of routes, or maximum cost. In some examples, constraint 328 may include the same point of presence, different points of presence, the same network device, or different network devices. In some examples, a plurality of network resources may include an interface with an interface type, a link, a bandwidth associated with a link, a route, a region, a point of presence, a route distinguisher, a route target, an address, a prefix, or a network device.

[0059] In some examples, computing device 302 may use internal placement model 402 to automatically allocate multiple resources 332 to multiple customer services such that the allocation of the multiple resources satisfies at least one requirement (in requirements 330) and at least one constraint (in constraints 328) for each of the multiple customer services. Computing device 302 may then generate data indicating the allocation of multiple resources 332 to the multiple customer services, and reverse-map the data indicating the allocation into a format consumable by network controller 300, and transmit the reverse-mapped data to network controller 300. For example, computing device 302 may reverse-map the data indicating the allocation into a network service model instance containing information indicating the allocation. Computing device 302 may output the reverse-mapped data to client device 400. In this way, client device 400 may receive information that enables client device 400 to access network 120 ( Figure 1 ) resources to provide information for multiple customer services.

[0060] In some examples, rather than allocating multiple resources to satisfy all constraints of multiple customer services, computing device 302 may automatically determine for each requirement (such as in requirements 330) and each constraint (such as in constraints 328) whether a requirement or constraint can be satisfied by only a specific resource in multiple resources 332. For example, a requirement for a customer service may be that the link is 50GB, and there may be only one 50GB link, with all other links being less than 50GB. Therefore, a specific requirement for a 50GB link may be satisfied by only one 50GB link. In response to the determination, computing device 302 may allocate at least one of multiple resources 332 to at least one customer service in multiple customer services based on the determination. For example, computing device 302 may allocate a 50GB link to a customer service with a 50GB link constraint. After determining for each requirement in requirements 330 and each constraint in constraints 328, computing device 302 may provide information to customer device 400 to enable customer device 400 to provision at least one customer service (e.g., a customer service with a 50GB limit).

[0061] By mapping customer service instances, network service instances, and / or network resource instances into an internal placement model, computing device 200 may be able to determine the placement of customer service on network resources of any network, not just network 120. By mapping the resulting placement back into network service instances consumable by network controller 100, network controller 100 may have provisioning network 120 ( Figure 1 )'s network resources. Therefore, the technology of the present disclosure provides practical application of the technology by transforming the data received by the computing device 200.

[0062] Figure 4is a conceptual diagram illustrating an internal placement model 320 according to the technology of this disclosure. Figure 4 302 ( Figure 3 ) can be performed. For example, computing device 302 can receive a service order 400 from a customer. Service order 400 can include network service instance 402 and customer service instance 404. In some examples, service order 400 can include network resource instance, which can include representation of network resource 406. Computing device 302 can use any prior knowledge of service order 400 and network resource 406 to map customer service and network resources into internal placement model 320. For example, network device 302 can map elements of service order 400 into requirement options JQ 424 and constraint JQ 426 (both described below). Network device 406 can map elements of network resource 406 to resource pool JQ 414 (described below).

[0063] Elements of the internal placement model 320 may include a service definition 412 that may be used to represent a service definition, a resource pool JQ 414 that may be used to manage a resource pool such as a resource pool 438, for example using a JavaScript Object Notation (JSON) query (JQ) language. JSON is a standard text-based format for representing structured data based on JavaScript object syntax. For example, JQ may be a general transformer for JSON documents, similar to XPATH and XSLT (Extensible Stylesheet Language Transformations) for XML (Extensible Markup Language). Although the examples stated in the present disclosure may refer to the use of the JQ language, any programming language may be used in accordance with the techniques of the present disclosure, such as Python, C++, Go, or other suitable programming languages.

[0064] Internal placement model 320 may also include customer 416 , which may identify the customer who submitted service order 400 , and network elements 418 , which may represent or identify various network elements of network resource 406 .

[0065] The service definition 412 may interact with the placement JQ 420. The placement JQ 420 may accept as input an object with an "order" property containing the service order with the input instance and a "placement" property containing the above requirements list, where the option list and placement results are in the same form as input option constraints and manual placement. The placement JQ may output updates to the JSON document in the "order" property to reflect the option updates resulting from the propagation of constraints and placement assignments in the event that the service is placed.

[0066] There may be more than one placement JQ. The "order" input of a subsequent placement JQ may be the output of the previous placement JQ.

[0067] The service definition 412 may also interact with a service model 422, which may be Figure 3 4 and requirement options JQ 424, which identifies the requirements in the service instance and, for example, what options are available for placing the requirements on network resources in resource pool 438. Constraint JQ 426 identifies constraints, such as constraint 430, that must be satisfied based on the combination of requirements. Service instance 428 may represent an instance of a customer service.

[0068] Service instance 428 can be an instance of service order 400 and is associated with constraints 430 and customer element 432. Constraints 428 can be associated with requirements 434. Requirements 434 can be associated with resources 436, which can be resources represented in resource pool 438. Resource pool 438 can include used and idle resources. When computing device 302 places a service on resource 436, resource 436 can be updated in internal placement model 320 to indicate that resource 436 is used.

[0069] By representing the customer service model and the network service model in the internal placement model 320, the computing device 302 can generate the placement of customer service on network resources for many different customers, even though many different customers may be using different customer service models and / or network resource models within their own network devices.

[0070] In some examples, basic constraints (such as constraint 430) must also be satisfied by an effective placement. One such constraint may include that the interface must be located on a node co-located with the customer site. Another such constraint may be that the bandwidth required for the access must be allocated from the node where the access is placed. Another such constraint may be that the number of routes for the site must be allocated from the node where the access is placed. Further, a virtual private network (VPN) may also have diversity constraints for robustness in the event of failures, which may require two or more accesses to be placed on different nodes.

[0071] Example service placement use cases are now discussed. Design management may include the following aspects: Network design and service design. Network design may be the process of specifying how to select a pool of network resources from an input network service instance 402. Service design may be the process of specifying how to select requirements, valid network options, and constraints from an input customer service instance 404. Service design may also be the process of specifying how to determine manually provided placement constraints from an input network service instance 402. Service design may also be the process of specifying how to update network service instance 402 and customer service instance 404 with the results of validating / reducing options and automatically placing services.

[0072] In some examples, network resource pools (such as network resource pool 438) can be shared among all services associated with them. In this way, service design activation generally does not require any changes to the network design. If a service design depends on network resources that are not in the current network design, the network design can be updated as part of the service design activation.

[0073] There are multiple other non-placement aspects of service activation, such as activating associated workflows. Placement 410 is used for pre-provisioning and service provisioning workflows. Pre-provisioning is the process of discovering and preparing new network resources to support services. Placement 410 can determine the network design on a new or updated network to maintain a pool of resources available for allocation to services. Service provisioning can include composing a service order and collecting customer requirements for the service order 400 in CSI 404.

[0074] During the service order composition process, Place 410 can be called at any time when the order is in a consistent state to semantically validate the order and provide valid options to take all requirements into account. For example, at any time during the order composition process, Figure 2 The web user interface 238 of the service order can send the service order to update the instance included in the service order. The placement 410 can update the instance by propagating constraints and allocating any resources requested as a manual placement by the administrator 104. Propagating constraints can include determining the remaining option set required.

[0075] The options can be narrowed via input from administrator 104, for example administrator 104 may request that access be placed at a point of presence in New York City, even though the service design would allow placement at points of presence in New York City and Connecticut. Manual placement is a very specific narrowing of the options, indicating the exact PE interface where the access is to be placed.

[0076] The propagation constraint can determine the reduction of options triggered by administrator 104 input, such as manual placement decisions. For example, if administrator 104 manually places a visit in PE NYC1 and has another visit requirement (with a point of presence diversity constraint), all options involving PE NYC1 can be removed from the second visit.

[0077] Another way constraint propagation can reduce options is that service orders become more granular. When requirements and constraints are added to service orders, the set of options that specify requirements early on can be eliminated. Another way constraint propagation can reduce options is that resources are allocated due to concurrently processed orders, which may make some options no longer available.

[0078] Order composition can be an interactive process where placement 410 helps narrow down the available options, which populates the manually placed pick list and / or indicates that requirements cannot be met so the operator can negotiate with the customer or order more network resources to compose an order that meets all constraints.

[0079] Placement 410 comes into play when executed. The service provisioning workflow begins by executing the placement of the service order, automatically completing the service placement if it was not placed entirely manually, and allocating resources before updating the order with the network service instances 402 required for subsequent steps in the workflow including transformations and applications to the device.

[0080] Model-based placement design can be specified based on a filter program that is informed by the model to transform model instances into internal placement models and vice versa. For example, computing device 302 ( Figure 3 ) can transform input instances into placed elements such as resource pools, requirements, constraints, and relationships between these elements. The placed instances can in turn be transformed back into updated instances of the model in use.

[0081] Placement 410 can be a placement element and selector definition pattern for DS defined for three selector types. For example, a JQ filter can transform network resources to be indexed by their network element identification (point of presence / PE / interface type), location, and type.

[0082] A network design may consist of a set of models and network resource pool JQ 414 filters. A resource pool JQ 414 filter identifies a network resource pool in the network model instance on which the resource pool JQ 414 filter operates.

[0083] An example network model may include a set of points of presence, whose locations contain PEs with bandwidth and routing resources. Each PE may consist of a set of interfaces, which are categorized by the type of service they can provide (lease line, DSL, etc.).

[0084] For example, the resource pool JQ 414 can take an instance of the network model being used and output a path to a resource pool in a network element "forest." Any number of resource pool JQs can be developed to construct different parts of the resource pool forest. In other examples, in addition to the network element forest that can effectively include a hierarchical database with an index, the internal placement model 320 can be organized in another way, such as including one or more relational databases, graph databases, etc.

[0085] The following is the output model of the resource pool JQ 414. The resource pool includes a network element path. A network element path can be a sequence of name:type pairs, each type is a property of the network element at the end of the path, and the name is the value of the property. The path is used to organize and index network elements into a hierarchical database that supports valid requirement option queries.

[0086] A service design can include requirements, options, constraints, and placement JQ filters. If a requirement is manually placed in an instance, the requirement JQ can indicate this using the pool path in the network element forest. In the case of named or numbered resources, the specific name or number of the resource can be indicated in the named requirement or numbered requirement, respectively.

[0087] Compared to requirement options and constraint JQs, placement JQs work in the opposite direction: they take the placement element of the placed service as input and update the network service instance 402 and / or customer service instance 404 in the service order 400 with the result of the placement update.

[0088] FIG. 5A to FIG. 5B is a conceptual diagram illustrating examples of multiple resources and example placement of some of the multiple resources. Figure 5A and Figure 5B Can represent a class of example objects (or instances of a class) for placement. Figure 5AAs shown, resources may include regions, such as Northwest (NW500). Resources may also include a location, such as New York City (NYC NE502) in the northeast, Boston (BOS NE 504) in the northeast, and Los Angeles (LAX SW 506) in the southwest. Locations may include points of presence, such as NYC1 508, NYC2 510, BOS1 512, LAX1 514, and LAX2 516. Each point of presence may include multiple routes and bandwidths. For example, NYC1 508 has 1 million routes and 40GB of bandwidth. Each point of presence may have a pool of associated interface types. For example, NYC1 508 may have an Ethernet type interface pool (ETH 518), and NYC2 510 may have a digital subscriber line type interface pool (DSL 520) and a dedicated line type interface pool (LL 522). Similarly, BOS1 512 may have ETH524, DSL 526, and LL 528. Each interface type pool may include interfaces of that type. For example, ETH 518 may have Ethernet interfaces GE-0 / 0 / 0, GE-0 / 0 / 1, etc., as shown in box 530, DLS 520 may have a DSL interface shown in box 532, LL 522 may have a dedicated line interface shown in box 534, ETH 524 may have an Ethernet interface shown in box 536, DSL 526 may have a DSL interface shown in box 538, and LL 528 may have a dedicated line interface shown in box 540.

[0089] In some examples, resource allocation or placement can be based at least in part on meeting the requirements of a given customer service. Figure 5B As shown, the first service may have a specific interface represented by interface 542. Figure 5A When placing a customer service on a resource of 510, the specific interface may be satisfied. In this example, the interface may be interface 532. Thus, when placing this example customer service, computing device 302 may identify interface 532 as a DSL interface. Since interface 532 is of interface type DSL 520, computing device 302 may place a customer service in point of presence NYC2 510 in northeast New York City, such as Figure 5A The dashed line in the figure and Figure 5B 540, NYC 546, NYC2 510, and interface 532).

[0090] In another example, a customer service may have a specific number of supportable routes as a requirement, such as represented by route 548. When placing this example customer service, computing device 302 may identify resources that have at least the number of supportable routes required to place the service. If the number of routes is 10 million, computing device 302 may identify resources that have at least the number of supportable routes required to place the service. Figure 5A For example, computing device 302 can place services from the Northwest region (NW 500) to Boston location BOS 504, and then to BOS1 512 point of presence. This example is also shown in Figure 5B 548, NE 544, BOS 550, BOS1 512, and 10M route 552.

[0091] In another example, customer service may have a bandwidth requirement of, for example, 40 GB. In this example, computing device 302 may place customer service on Figure 5A For example, computing device 302 may determine that LAX1 has 40 GB of free bandwidth, and Figure 5A The placement service is indicated by the alternating dashed / dotted lines in the example. Figure 5B Similar wireframe representations in (Bandwidth 554, SW 556, LAX 558, LAX1514 and 40G 560).

[0092] exist FIG. 5A to FIG. 5B Each of these examples involved placing a single customer service with a single requirement (interface, route, or bandwidth). As the number of requirements for each customer service grows, additional constraints are placed on the customer services, a greater number of customer services are added, more resources are added, and placing customer services on these resources begins to consume resources, and determining how best to allocate resources to the customer services becomes more complex.

[0093] Resource Pool JQ can trace paths in the input instances and construct name:type paths to network elements in the placed element model that lead to the resource pool.

[0094] Figure 6 is a conceptual diagram depicting an example resource tree of a resource pool in accordance with techniques of this disclosure. Figure 6Can represent the example object (or instance of class) for placement. Resource tree 600 includes three types of resources: interface, bandwidth and routing. Each of the interface, bandwidth and routing of resource tree 600 can include location, such as northeast (NE) or southwest (SW). Interface also may have associated interface type, such as Ethernet, LL or DSL. Each of interface, bandwidth and routing may have associated point of presence, such as New York City (N), Boston (B) or Los Angeles (L). Each of interface, bandwidth and routing may have associated point of presence, such as NYC1 (N1), NYC2 (N2), BOS1 (B1), LAX1 (L1) and LAX2 (L2). In this example, interface, bandwidth and routing number are shown as idle in associated point of presence. This means that these resources are not allocated by placing customer service on resources.

[0095] Run all resource pool JQs (such as Figure 4 The resource pool JQ 414) allows placement 410 to construct a "forest" of network elements, where each path in the forest leads to a resource pool, and placement 410 assigns that resource pool to requirements in a service instance, just like this.

[0096] Figure 7 is a conceptual diagram illustrating an example of a layer 3 virtual private network (L3VPN) service order in accordance with techniques of this disclosure. Figure 7 5 , may represent example categories for use with service order instances. For example, a customer (ACME 5) may place an L3VPN service order instance for L3VPN service 700 by transmitting the service order instance to computing device 302. Computing device 302 may map the service order instance into internal placement model 320. For example, computing device 302 may determine that L3VPN service 700 is one of VPN services 702 and is for customer ACME 5 704. Computing device 302 may determine that there is a site 706 involved in the L3VPN service order instance.

[0097] Each of these sites may have routing requirements. For example, the requirement for the number of headquarters routes 708 that can be supported may be 1000 routes, and the requirement for the number of research and design (R&D) routes 710 that can be supported may be 250 routes. The headquarters routes 708 may include a location requirement 712 (such as in NE 720) and an access requirement 714 (such as 1 GB bandwidth for primary placement and 1 MB bandwidth for backup placement). The R&D routes 710 may include access 716 and a location requirement 718. For example, the location requirement 718 may be of SW 722, and the access requirement 716 may be 5 MB of bandwidth.

[0098] The computing device 302 can base the placement of L3VPN customer services on various requirements and constraints of the L3VPN service order instance. For example, the computing device 302 can determine to place the primary headquarters route at the location of NE 720, where the bearer is a dedicated line, the bandwidth is 1GB and is placed at E1-1, as indicated in box 724. The computing device 302 can determine to place the backup headquarters route at the location of NE 720, where the bearer is DSL, the bandwidth is 1MB, and is placed at A-2, as shown in box 726. The computing device 302 can also determine to place the R&D route at the location of SW 722, where the bearer is Ethernet, the bandwidth is 5MB, and is placed at ET-3, as shown in box 728. This is a fairly simple example with two offices, some requirements, and two constraints. Real-life examples can be extremely complex. Although Figure 7 The examples are for L3VPN, but in some examples, the service order instance can be a Layer 2 Virtual Private Network (L2VPN) or any network service.

[0099] Figure 8 is a conceptual diagram illustrating placement options and placement resources according to techniques of this disclosure. Figure 8 Can represent an example object (or instance of a class) for placement. Figure 8 In the example, Figure 7 An example of previously unallocated resources is shown. Figure 7 Example customer services of are also shown. For example, for a home office (HO), customer service 802 may have a constraint that two points of presence are used, and a requirement that one point of presence has 1GB bandwidth and 1K routes and the other point of presence has 1MB bandwidth and 1K routes. For an R&D facility, customer service 804 may have a constraint that the same PE is used, and a requirement that 5M bandwidth and 250 routes.

[0100] Computing device 302 may determine which options for allocation are optimal and allocate such options. Each of the dashed lines represents a potential allocation that was not made, and each of the solid lines represents an allocation that was made. Computing device 302 may update free and used statistics associated with each of the allocated resources to reflect the new allocation. Figure 8 In the example, F means "free" and U means "used".

[0101] Fig. 9 is a conceptual diagram that depicts an example allocation of resources to customer services to satisfy the associated constraints. Fig.10In the example of FIG. 9 , at least one customer service has a constraint that resources for serving the customers are on the same PE 900. At least one customer service has a constraint that resources for serving the customers are on different PEs 902. At least one customer service has a requirement for two Ethernet interfaces (requirement 904 and requirement 906) and a DSL interface (requirement 908).

[0102] PE1 910 may have a single DSL interface and a single Ethernet interface available. Therefore, in order to satisfy requirement 904, requirement 906 and constraint 900, Ethernet resources (two Ethernet interfaces on the same PE), the resources of PE2 912 must be allocated to requirement 904 and requirement 906, which includes one DSL interface and three Ethernet interfaces.

[0103] To satisfy constraint 902, this requirement 908 is placed on a different PE than requirement 906, and the DSL interface of PE1 must be assigned to requirement 908. Again, this is a simple example with two constraints and three requirements. In a real-world example of a network with thousands of resources, thousands of customer services (with thousands of constraints and thousands of requirements), allocating network resources becomes very unwieldy.

[0104] Fig.10 is a conceptual diagram illustrating an example placement assist technique according to the present disclosure. Fig.10 Can represent an example object (or instance of a class) for placement. Fig.10 In the example of , customer service 1000 and customer service 1002 are shown. Two allocations (shown in bold in the example) must be made to satisfy the constraints associated with customer service. Each of the dashed lines shown under the options / placements is an option and need not be applied to satisfy the constraints. In other words, if an allocation is not made, such as the allocation represented by the bold line, the constraints associated with customer service 1002 cannot be satisfied. For example, there may be multiple options to satisfy the remaining constraints associated with customer service (once the bold line placements are made). In other words, each of the remaining constraints can be satisfied by more than one resource.

[0105] For example, to meet the requirements of customer service 1002, i.e., customer C1 has its interfaces on different PEs, each of the interface requirements of bandwidth 7, 6, and 4 must be placed on different PEs of N1, N2, and N3. As shown, CE N1 has 1 idle interface, while CE N2 and CE B1 both have 2 idle interfaces. Therefore, the air core interface of CE N1 must be assigned to one of the interface requirements of customer service 1002 to meet the association constraint. As shown, the interface of CE N1 is assigned to the requirement C1 / S0 / A0. In other examples, the interface of CE N1 can be assigned to the requirements C1 / S0 / A1 or C1 / S1 / A0.

[0106] In contrast, the requirements and constraints of customer service 1000 do not require any specific resource allocation. The requirements of C0 / S0 / A0 and C0 / S0 / A1 are constrained on different points of presence. Since point of presence N includes idle interfaces on PE N1 and PE N2, and point of presence B includes idle interfaces on PE B1, the requirements and constraints of customer service 1000 can be met by resource allocation of PE N1 or PE N2 and resource allocation of PE B1.

[0107] In some examples, computing device 302 may use the scores and determine placement of the plurality of customer services on the plurality of network resources that maximizes the scores. Computing device 302 may then output the placement option with the maximum score for display to administrator 104 via a display associated with network controller 300. Administrator 104 may choose to select such a configuration, or choose not to select the displayed configuration.

[0108] In some examples, computing device 302 can facilitate administrator 104 to set priorities for some customer services relative to other customer services. For example, the administrator can indicate to computing device 302 that a particular service is most important or more important than another particular customer service.

[0109] In some examples, computing device 302 can use deductive rules to see if a requirement or constraint can be met. In some examples, computing device 302 can use artificial intelligence or inter-linear programming. In some examples, computing device 302 can use branch and bound techniques. For example, computing device 302 can determine an initial bound and then check another bound. In some examples, computing device 302 can operate as a constraint optimizer.

[0110] In some examples, in assist mode, computing device 302 may indicate a need to change the placement of other customer services to meet the requirements of currently placed customer services. In some examples, computing device 302 may support two criteria to automatically select between multiple placement options. For example, computing device 302 may prefer placement that minimizes disruption when modifying customer services, such as not changing the placement of existing customer services unless such changes are necessary to accommodate any changing constraints. In another example, when allocating resources, computing device 302 may prefer a balanced allocation across multiple resource pools, or alternatively exhaust a first resource pool before beginning to allocate from a second resource pool (e.g., similar to Multi-Protocol Label Switching (MPLS) least fill and most fill criteria).

[0111] In some examples, there may be at least one constraint or at least one requirement associated with the new customer service that cannot be met. In this case, the administrator 104 can ask the customer whether it is acceptable for the customer to relax at least one requirement or at least one constraint. If the customer can accept it, the administrator 104 can change at least one requirement or at least one constraint associated with the new customer service via the network controller 300 and / or the computing device 302. If the customer cannot accept it, the administrator 104 can use the computing device 302 to reallocate multiple resources so that at least one requirement or at least one constraint associated with the new customer service is met. Alternatively, the administrator 104 can assign a priority to each of the multiple customer services via the computing device 302, and reallocate multiple resources based on the assigned priority of each of the multiple customer services. As another alternative, the administrator 104 can reallocate at least a portion of the multiple resources via the computing device 302 based on predetermined criteria.

[0112] Fig.11 1 is a flow chart illustrating the operation of an example technique for placing a customer service on a resource according to the present disclosure. Computing device 302 may receive from a client device an instance of a customer service model representing a plurality of customer services, each of the plurality of customer services being associated with a corresponding at least one requirement and a corresponding at least one constraint (1102). For example, computing device 302 may receive from network controller 300 an instance of a customer service model that may include customer service instance 404 ( Figure 4 of both) service orders 400.

[0113] Computing device 302 may receive an instance of a resource model representing a plurality of resources from a client device ( 1104 ).For example, computing device 302 may receive service order 400 , which may include network service instance 402 or network resource 505 , from network controller 300 .

[0114] Computing device 302 may map instances of the customer service model and instances of the resource model to an internal placement model maintained by the computing device (1106). For example, computing device 302 may map customer service models and instances of network service instances 402 and / or network resources to internal placement model 320.

[0115] Computing device 302 may use the internal placement model to automatically allocate the plurality of resources to the plurality of customer services such that the allocation of the plurality of resources satisfies at least one requirement and at least one constraint of each of the plurality of customer services (1108). For example, computing device 302 may use internal placement model 320 to automatically allocate the plurality of resources to the plurality of customer services such that the allocation of the plurality of resources satisfies at least one requirement and at least one constraint of each of the plurality of customer services.

[0116] Computing device 302 may generate data in response to the allocations, the data indicating how the plurality of resources are allocated to the plurality of customer services (1110).For example, computing device 302 may generate data indicating the allocation of the plurality of resources to the plurality of customer services.

[0117] The computing device 302 may reverse-map the data into a format consumable by the client device, the data indicating how the plurality of resources are allocated to the plurality of client services (1112). For example, the computing device 302 may map the data indicating the allocation into the network service model instance 402, thereby updating the network service model instance 402. In the event that the service order 400 does not include the network service model instance 402, the computing device 302 may create the network service model instance 402, which includes the data indicating the allocation.

[0118] The computing device 302 may output the inverse mapped data to the client device, the data indicating how the multiple resources are allocated to the multiple customer services (1114). For example, the computing device 302 may output the updated network service model 412 to the network controller 300, which includes the inverse mapping data indicating how the multiple resources are allocated to the multiple customer services.

[0119] In some examples, the client device is a first client device, the instance of the client service model is an instance of the first client service model, the instance of the resource model is an instance of the first resource model, the plurality of client services is a first plurality of client services, and the plurality of resources is a first plurality of resources. In such an example, the computing device 302 may receive an instance of a second client service model representing a second plurality of client services from a second client device (e.g., a different network controller), the second plurality of client services, each of the second plurality of client services being associated with a corresponding at least one requirement and a corresponding at least one constraint, the second client service model being different from the first client service model. In such an example, the computing device 302 may receive an instance of a second resource from the second client device, the second resource model being different from the first resource model. In such an example, the computing device 302 may map the instance of the second client service model and the instance of the second resource model to an internal placement model. In such an example, the computing device 302 may use the internal placement model to automatically allocate the second plurality of resources to the second plurality of client services, such that the allocation of the second plurality of resources satisfies at least one requirement and at least one constraint of each of the second plurality of client services. In such an example, the computing device 302 may generate data in response to the allocation of the second plurality of resources to the second plurality of client services, the data indicating how the second plurality of resources are allocated to the second plurality of client services. In this example, computing device 302 can reverse map the data into a format consumable by the second client device, the data indicating how the second plurality of resources are allocated to the second plurality of resources. In this example, computing device 302 can output the reverse mapped data to the second client device, the data indicating how the plurality of resources are allocated to serve the second plurality of clients.

[0120] In some examples, the resource model includes a network service model that represents existing placement customer services on multiple resources (e.g. Figure 3 A network service model 308) or a network resource model representing multiple resources (e.g. Figure 3 In some examples, the at least one requirement comprises a requirement selected from the group consisting of: an interface type, a bandwidth, a number of routes, and a maximum cost. In some examples, the at least one constraint comprises a constraint selected from the group consisting of: the same point of presence, different points of presence, the same network device, and different network devices. In some examples, the multiple resources comprise at least one of the resources selected from the group consisting of: an interface having an interface type, a link, a bandwidth associated with a link, a route, a region, a point of presence, a route distinguisher, a route target, an address, a prefix, and a network device.

[0121] In some examples, computing device 302 receives a service order instance (eg, service order 400 ) that includes an instance of a customer service model (eg, customer service instance 404 ) and an instance of a resource model.

[0122] In some examples, the service order instance includes a network service order instance. In some examples, the service order instance includes an L2VPN service order instance or an L3VPN service order instance.

[0123] Fig.12 is a flow diagram illustrating other example techniques for placing customer services on resources according to the present disclosure. Computing device 302 may receive an indication of a plurality of resources from a customer device (1202). For example, computing device 302 may receive an instance of network resource model 306 or network service instance 402 from network controller 300, either of which may include an indication of a plurality of resources.

[0124] Computing device 302 may receive, from a client device, an indication of a plurality of customer services, each of the plurality of customer services being associated with a corresponding at least one requirement and a corresponding at least one constraint (1204). For example, computing device 302 may receive, from network controller 300, customer service instance 404, which may include an indication of a plurality of customer resources.

[0125] The computing device 302 may automatically determine, for each requirement and each constraint, whether the requirement or constraint can be satisfied only by a specific resource in the plurality of resources 1206. For example, the computing device may compare the idle resources with each requirement and each constraint to determine whether a specific requirement or a specific constraint can be satisfied only by a specific resource.

[0126] Computing device 302 may allocate at least one of the plurality of resources to at least one of the plurality of customer services based on the determination 1208. For example, if a particular resource must be allocated so that a particular requirement or a particular constraint is satisfied, computing device 302 may allocate the particular resource to satisfy the particular requirement or the particular constraint.

[0127] After determining for each requirement and each constraint, computing device 302 may provide information to the client device to enable the client device to provision at least one customer service 1210. For example, computing device 302 may provide network controller 300 with network service instance 402, which includes information that enables network controller 300 to provision at least one customer service.

[0128] In some examples, allocating at least one of the plurality of resources includes allocating to satisfy each requirement or each constraint that can be satisfied only by the corresponding specific resource. In some examples, after allocating, computing device 302 determines a plurality of options for allocating at least a portion of remaining resources of the plurality of resources, the remaining resources not yet allocated, to satisfy remaining requirements and remaining constraints, the remaining requirements and remaining constraints not yet satisfied. In some examples, computing device 302 outputs for display at least one of the plurality of resources, each requirement or each constraint that can be satisfied only by the corresponding specific resource, and a representation of the plurality of options.

[0129] In some examples, computing device 302 receives an indication of a user input from a user, the user input indicating a selected option among the plurality of options. In some examples, in response to receiving the indication of the user input, computing device 302 allocates at least a portion of the remaining resources to the remaining portion of the customer service based on the selected option among the plurality of options. In some examples, computing device 302 provides information to the client device to enable the client device to supply the remaining portion of the customer service.

[0130] In some examples, computing device 302 receives a customer model including a new customer service from a customer device. In some examples, computing device 302 determines that a remaining portion of the plurality of resources cannot satisfy at least one requirement or at least one constraint associated with the new customer service, and the remaining resources have not been allocated. In some examples, computing device 302 outputs for display an indication that a remaining portion of the plurality of resources cannot satisfy at least one requirement or at least one constraint associated with the new customer service.

[0131] In some examples, computing device 302 changes at least one requirement or at least one constraint associated with a new customer service, reallocates multiple resources so that at least one requirement or at least one constraint associated with the new customer service is met, assigns a priority to each of a plurality of customer services, and reallocates the multiple resources based on the assigned priority of each of the plurality of customer services, or reallocates at least a portion of the multiple resources based on predetermined criteria.

[0132] In some examples, the at least one requirement comprises a requirement selected from the group consisting of: interface type, bandwidth, number of routes, and maximum cost. In some examples, the at least one constraint comprises a constraint selected from the group consisting of: same point of presence, different point of presence, same network device, and different network device.

[0133] In some examples, the indication of the plurality of resources includes an instance of a resource model. In some examples, computing device 302 maps the instance of the customer service model and the instance of the resource model to an internal placement model maintained by the computing device. In some examples, computing device 302 de-maps at least one of the plurality of resources assigned to at least one of the plurality of customer services from the internal placement model into a format consumable by the customer device.

[0134] The techniques described in the present disclosure may be implemented, at least in part, in hardware, software, firmware, or any combination thereof. For example, various aspects of the described techniques may be implemented within one or more processors, including one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or any other equivalent integrated or discrete logic circuit systems and any combination of such components. The term "processor" or "processing circuit system" may generally refer to any of the aforementioned logic circuit systems or any other equivalent circuit systems, either alone or in combination with other logic circuit systems. A control unit including hardware may also perform one or more techniques of the present disclosure.

[0135] Such hardware, software and firmware can be implemented in the same device or in a separate device to support the various operations and functions described in this disclosure. In addition, any of the described units, modules or components can be implemented together or individually as discrete logic devices, rather than interoperable logic devices. The depiction of different features as modules or units is intended to emphasize different functional aspects, and does not necessarily mean that such modules or units must be implemented by separate hardware or software components. On the contrary, the functionality associated with one or more modules or units can be performed by separate hardware or software components, or integrated in shared or separate hardware or software components.

[0136] The technology described in the present disclosure may also be implemented or encoded in a computer-readable medium (such as a computer-readable storage medium) containing instructions. For example, when the instructions are executed, the instructions embedded or encoded in the computer-readable medium can cause a programmable processor or other processor to perform the method. Computer-readable media may include non-transient computer-readable storage media and transient communication media. Computer-readable storage media (tangible and non-transient) may include random 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), flash memory, hard disk, CD-ROM, floppy disk, cassette, magnetic media, optical media or other computer-readable storage media. The term "computer-readable storage medium" refers to a physical storage medium, not a signal, carrier wave or other transient medium.

[0137] Various examples have been described. These and other examples are within the scope of the following claims.

Claims

1. A method for managing customer service, the method comprising: Receiving, by a computing device having one or more processors, an indication of a plurality of resources from a client device; receiving, by the computing device from the client device, an indication of a plurality of customer services, each customer service of the plurality of customer services being associated with a corresponding at least one requirement and zero or more corresponding constraints; automatically determining, by the computing device, for each requirement and each constraint, whether the requirement or the constraint can only be satisfied by a specific resource among the plurality of resources; allocating, by the computing device based on the determination, at least one resource of the plurality of resources to at least one customer service of the plurality of customer services; providing, by the computing device to the client device and subsequent to the determination for each requirement and for each constraint, information enabling the client device to provide the at least one client service; Wherein the indications of the plurality of resources include at least one of instances of a network service model or instances of a resource model, and where the indications of the plurality of customer services include instances of a customer service model, the method further includes: mapping, by the computing device, the instance of the customer service model, and the at least one instance of the network service model or the instance of the resource model to an internal placement model maintained by the computing device; as well as The at least one resource of the plurality of resources allocated to the at least one client service of the plurality of client services is inversely mapped from the internal placement model into a form consumable by the client device.

2. The method of claim 1 , wherein allocating the at least one resource of the plurality of resources comprises: Allocations are made to satisfy each requirement or each constraint that can only be satisfied by the corresponding specific resource.

3. The method according to claim 2, further comprising: After allocating to satisfy each requirement or each constraint that can only be satisfied by the corresponding specific resource, multiple options are determined by the computing device for allocating at least a portion of the remaining resources of the multiple resources, which have not yet been allocated, to satisfy the remaining requirements and the remaining constraints, by which each requirement or each constraint that can only be satisfied by the corresponding specific resource is satisfied, and the remaining requirements and the remaining constraints have not yet been satisfied.

4. The method according to claim 3, further comprising: A representation of the at least one of the plurality of resources, each requirement or each constraint that can only be satisfied by the corresponding particular resource, and the plurality of options are output for display by the computing device.

5. The method according to claim 4, further comprising: receiving, by the computing device, an indication of user input indicating a selection of one of the plurality of options; allocating, by the computing device in response to receiving the indication of the user input, the at least a portion of the remaining resources to a remaining portion of the client service based on the selected one of the plurality of options; as well as Information that enables the client device to provide the remaining portion of the client service is provided by the computing device to the client device.

6. The method according to claim 3, further comprising: receiving, by the computing device from the client device, a customer model including a new customer service; determining, by the computing device, that a remaining portion of the plurality of resources cannot satisfy at least one requirement or at least one constraint associated with serving the new client, the remaining resources having not yet been allocated by allocating; as well as An indication that the remaining portion of the plurality of resources cannot satisfy the at least one requirement or the at least one constraint associated with the new client service is output for display.

7. The method according to claim 6, further comprising: changing, by the computing device, the at least one requirement or the at least one constraint associated with serving the new customer; reallocating, by the computing device, the plurality of resources such that the at least one requirement or the at least one constraint associated with serving the new client is satisfied; assigning, by the computing device, a priority to each of the plurality of customer services, and reallocating the plurality of resources based on the assigned priority of each of the plurality of customer services; or At least a portion of the plurality of resources is reallocated, by the computing device, based on predetermined criteria.

8. The method of any one of claims 1 to 3, wherein the at least one requirement comprises a requirement selected from the group consisting of interface type, bandwidth, number of routes, and maximum cost.

9. The method according to any one of claims 1 to 3, wherein the zero or more corresponding constraints include at least one constraint, and the at least one constraint includes a constraint selected from the group consisting of the same point of presence, different points of presence, the same network device, and different network devices.

10. A computing device comprising: one or more processors; as well as A non-transitory computer readable medium having stored thereon instructions to cause the one or more processors to: receiving an indication of a plurality of resources from a client device; receiving, from the client device, an indication of a plurality of customer services, each customer service of the plurality of customer services being associated with a corresponding at least one requirement and zero or more corresponding constraints; automatically determining, for each requirement and each constraint, whether the requirement or the constraint can only be satisfied by a specific resource among the plurality of resources; allocating at least one of the plurality of resources to at least one of the plurality of customer services based on the determination; providing, to the client device and subsequent to said determining for each requirement and for each constraint, information enabling the client device to provide said at least one client service; Wherein the indication of the plurality of resources comprises at least one of an instance of a network service model or an instance of a resource model, and wherein the indication of the plurality of customer services comprises an instance of a customer service model, the one or more processors are further configured to: mapping the instance of the customer service model, and the at least one instance of the network service model or the instance of the resource model to an internal placement model maintained by the computing device; as well as The at least one resource of the plurality of resources allocated to the at least one client service of the plurality of client services is inversely mapped from the internal placement model into a form consumable by the client device.

11. The computing device of claim 10, wherein allocating the at least one resource of the plurality of resources comprises: Allocations are made to satisfy each requirement or each constraint that can only be satisfied by the corresponding specific resource.

12. The computing device of claim 11, wherein the instructions further cause the one or more processors to: After allocating to satisfy each requirement or each constraint that can only be satisfied by the corresponding specific resource, multiple options are determined by the computing device for allocating at least a portion of the remaining resources of the multiple resources, which have not yet been allocated, to satisfy the remaining requirements and the remaining constraints, by which each requirement or each constraint that can only be satisfied by the corresponding specific resource is satisfied, and the remaining requirements and the remaining constraints have not yet been satisfied.

13. The computing device of claim 12, wherein the instructions further cause the one or more processors to: A representation of the at least one resource of the plurality of resources, each requirement or each constraint that can only be satisfied by the corresponding particular resource, and the plurality of options are output for display.

14. The computing device of claim 13, wherein the instructions further cause the one or more processors to: receiving an indication of a user input indicating a selected one of the plurality of options; In response to receiving the indication of the user input, allocating the at least a portion of the remaining resources to a remaining portion of the client service based on the selected one of the plurality of options; and Information is provided to the client device that enables the client device to provide the remaining portion of the client service.

15. The computing device of claim 12, wherein the instructions further cause the one or more processors to: receiving, from the client device, a customer model including a new customer service; determining, by the computing device, that a remaining portion of the plurality of resources cannot satisfy at least one requirement or at least one constraint associated with serving the new client, the remaining resources having not yet been allocated by allocating; and An indication that the remaining portion of the plurality of resources cannot satisfy the at least one requirement or the at least one constraint associated with the new client service is output for display.

16. The computing device of claim 15, wherein the instructions further cause the one or more processors to: changing the at least one requirement or the at least one constraint associated with serving the new customer; reallocating the plurality of resources such that the at least one requirement or the at least one constraint associated with serving the new client is satisfied; assigning a priority to each of the plurality of customer services, and reallocating the plurality of resources based on the assigned priority of each of the plurality of customer services; or At least a portion of the plurality of resources is reallocated based on predetermined criteria.

17. The computing device of any one of claims 10 to 12, wherein the at least one requirement comprises a requirement selected from the group consisting of interface type, bandwidth, number of routes, and maximum cost.

18. A computing device according to any one of claims 10 to 12, wherein the zero or more corresponding constraints include at least one constraint, and the at least one constraint includes a constraint selected from the group consisting of the same point of presence, different points of presence, the same network device, and different network devices.

19. A computer readable medium encoded with instructions for causing one or more programmable processors to perform the method of any one of claims 1 to 9.