The Abstracted Network Inventory (ANI) component proactively constructs multiple network views over the same network infrastructure, called Logical Network Inventories (LNIs). Each LNI is optimized to a service in terms of its requirements such as CPU, memory, latency, etc. Every new service in a catalog triggers the creation of another LNI that will be part of the optimized network inventory. As such, service requirements are used in the method to guide the right level of abstraction.
Figure 1: Logical Network Inventory (LNI) generation.
INPUTS:
- (1) Network services requirements from a catalog.
- (2) Network representation from a network inventory.
OUTPUT:
- Logical Network Inventory (LNI): Service-optimized network views over the same network inventory.
-
Network Service: We model a network service as a directed graph denoted by Gs = (Vs, Es).
-
Network Inventory: In its basic form, a network inventory is modeled as an undirected graph Gi = (Vi, E i). In order to support graph collections, our network inventory model is extended to include a set of LNI graphs Gi = (Vi, Ei, LNIi), where LNIi represents multiple possible views of the same network inventory.
Given a service request Gs = (Vs, Es) and a network inventory Gi = (Vi, Ei, LNIi), our objective is to determine a LNI graph Ll ∈ LNIi optimized for the service requirements in terms of vertex and edge constraints. We illustrate our problem statement with an example given in Figure 2.
Figure 2: An example of Network Service & Network Inventory & Logical Network Inventory (LNI).
The left side of this figure shows two network services, where the numbers in rectangles represent requested CPU capacity, and the numbers near the links represent required bandwidth capacity. The network service 1 (ns1) connects two NFs (nf1 and nf2) with 45 units of bandwidth on the edge between them. The network service 2 (ns2) requires the bandwidth 5 over the edge (nf2, nf4) and 15 units over the edge (nf3, nf5), and the CPU resources 60, 70, 65 at NFs nodes, nf3, nf4, and nf5, respectively.
Figure 2 (right side) also depicts a network inventory. The number near the links is the available bandwidth, and the numbers in rectangles represent the available CPU resources at the vertices. Once the process of determining an LNI is performed, the network inventory contains two logical graphs LNIi = {Lns1, Lns2}, where each graph has a dedicated subset of vertices and edges, which represent an optimized network view to the requirements of each network service. Note that also a vertex (vc) is overlapped since V(Lns1 ) ∩ V(Lns2) = {vc }.
The primary objective here is to design three algorithms that efficiently create LNIs. The ANI component considers three modes of LNIs generation:
-
Node-oriented LNI: A set of nodes in the network inventory are assigned to the LNI (links are discarded). Such selected nodes have to support the CPU capacity constraint of NF nodes in a service (See pseudo-code).
-
Edge-oriented LNI: A set of edges in the network inventory are assigned to the LNI. Selected edges have to support the required bandwidth capacity of edges in a service (See pseudo-code).
-
Node/Edge-oriented LNI: A set of nodes and edges in the network inventory are assigned to the LNI. Nodes and edges are selected according to the CPU and bandwidth capacity constraints in a service, respectively (See pseudo-code).
$ cd lni-quality/
$ sudo python virt_gen.py
$ cd lni-quality-vnf/
$ sudo python virt_gen_vnf.py
$ cd lni-time-save/
$ sudo virt_gen_vnf_topo.py