# Technology conventions - NFV (Network Function Virtualization)

Network Function Virtualization (NFV) technologies permit the dynamic instantiation of Network Functions like NAT, Firewall, TCP-offloading engines, etc. as virtual machines running in standard IT facilities. The benefit of the approach is replacing the hardware equipment that was typically handling such functions, by software versions (Virtualized Functions, VF) that can be instantiated with more flexibility and velocity, over non-specialized servers.

NFV introduces the concept of service chain. A service chain is a traffic flow from an origin to a destination, that traverses one or more VFs, in a particular order. For instance, a service chain may need to carry traffic from a user in a node, to the central office node, traversing first a NAT, then a firewall, then a deep-packet-inspection filter. These three VFs may exist in different and any of the traversed nodes. The service chain just requires to traverse the VFs in a particular order.

Typically, VFs are characterized by a capacity (e.g. number of Gbps that can process), and a set of IT resources that consume. For instance, a virtual firewall can have a processing capacity of 150 Mbps, and its instantiation can consume 2 CPUs, 4 GB of RAM, and 8 GB of hard disk. This information is needed for allocating service chains in VFs, and for allocatiing VFs in the nodes, without collapsing the node IT resources available.

Net2Plan introduces in its version 0.5.0, the possibility of modeling NFV scenarios. The modifications added to Net2Plan are:

• Net2Plan introduces the element Resource inside the network model.
• A resource is instantiated in a particular node
• A resource has a particular user-defined type. For instance, Virtual Firewall'', NAT engine'', Web server'' or RAM'', CPU'', HardDisk'' are typical types in NFV contexts.
• A resource has a capacity, measured in the user-designated resource capacity units.
• A resource can be traversed by service chains. These are standard Route Net2Plan objects which have both links and resources in its traversed path. Each traversing route of a Resource occupies an arbitrary amount of its capacity.
• A resource can have an arbitrary set of base resources associated to it, which must be hosted in the same node, and occupy in each of the base resources an arbitrary amount of capacity. For instance, a resource Virtual firewall'' can have as base resources RAM'', HD'' and CPU'' and occupy in each 4 GBytes, 8 GBytes and 1 CPU respectively. Base resource relations permit model situations where resources are instantiated in NFV scenarios, consuming other base resources (e.g. raw IT resources like CPU, RAM or HD).
• Note: The resource host node, type, and associated base resources cannot change after resource creation. The capacity that the primary resource occupies in each base resource can change: for instance, a virtual firewall'' resource can variate the amount of CPU/RAM/HD consumed depending on its traversed traffic.
• Demand objects in Net2Plan have been extended to represent both regular unicast demands, and service chain requests. Now, it is possible to define in a demand, a mandatory sequence of resource types that all the routes of the demand must traverse. A demand that does not define such list, is a regular unicast demand.
• Route objects in Net2Plan have been extended to represent both regular routes (that only traverse Link objects), and service chains. Service chains have a path which combines Link and Resource objects, and so the sequence of the types of the traversed resources matches the specified for its demand.

Finally includes improvements in the visualization that ease the handling of service chain information. For instance, the sequence of links and resources are displayed in the Focus panel, summarizing the service chain relevant information. Also, the relations of a resource with its base resources is highlighted in the Focus Panel when a Resource is picked.

Net2Plan also includes several algorithms for optimizing the allocations of service chains. An original novel version of the k-minimum cost service chain algorithm is included, that computes the minimum cost paths that satisfy a service chain request. Net2Plan GUI uses this algorithm in the option that allocates each demand (or service chain request) using its minimum cost path. The reader can check other algorithms suitable for NFV optimization in the algorithm repository, under the NFV keyword.