# Network Function Virtualization

## Virtualization

5G brought new trends.

* Virtualization.
  * Simulate a hardware platform, in software: VM’s, containers.
    * Higher portability.
    * Higher scalability.
    * More cost-effective.
* Virtualized networks
  * Logical software-based routers, switches, etc.
  * Network services are easier to deploy and manage.
  * The physical part only needs to handle packet forwarding.

## Virtualized Network Functions

* VNFs.
* Network functions running in a virtual way over virtualization infrastructure.
* As they are
  * Lift and shift
* Or employing cloud-native principles.

<figure><img src="https://2294401029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1IGi5yHjBBVlQOff5FyI%2Fuploads%2FirU6YxnJOOSgLNVQi8zf%2Fa.png?alt=media&#x26;token=6f77929d-ed6f-42a9-a964-f807c85ad89f" alt=""><figcaption></figcaption></figure>

## VNF Lifecycle Management

VNFs are deployed after a service request is done, via the northbound interface.

That service request is composed of templates that consist of XML payloads and configuration parameters.

<figure><img src="https://2294401029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1IGi5yHjBBVlQOff5FyI%2Fuploads%2Ft98YNYe8dG7irYUoCGKb%2Fa.png?alt=media&#x26;token=5666551b-843e-43ac-bbe7-72a06caaeadd" alt=""><figcaption></figcaption></figure>

**Onboarding** – placing the VNF image/template and configuration, in the system’s catalogue;

* Openstack qcow2 and cmdk disk formats and config drive.

**Deploying** – placing the resources in the virtualization infrastructure, along with zero-day configuration (credentials, licenses, network information, etc.).

**Monitoring** – check the health of virtual machines regarding network status, CPU, and memory consumption.

**Healing** – after monitoring failure conditions exposed as Key Performance Indicators (KPIs), the system can heal the VM (restart, expand, etc.).

**Updating** – change the details of a virtual machine, set of virtual machines or networks that interconnect them.

**Undeploy** – remove a VM from the system.

## Network Services

A set of chained VNFs.

VNFs are interconnected and need to communicate with each other.

* Connectivity Forwarding Graph (FG) indicates how they are connected.
  * VNFFG – VNF Forwarding GraphVNFFG – VNF Forwarding Graph.

VNFFG – VNF Forwarding Graph.

* Can also be part of the forwarding graph.

VNFs+VNFFG = Network Service.

* Is managed and orchestrated together.
* Lifecycle mgmt for VNFs.
* Management of the VNFFG and NS lifecycle mgmt is going to be orchestrated across the whole lifecycle mgmt of those VNFs that form the NS.
* The NS defines some external connection points that can be connected to the end-points, defining an end-to-end service.
* We can concatenate different NS to for an end-2-end network service.

<figure><img src="https://2294401029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1IGi5yHjBBVlQOff5FyI%2Fuploads%2FmkEdRD4jdoEnQz5RlaW0%2Fa.png?alt=media&#x26;token=0858e4ca-ca5d-4315-b4a3-c2c8753576e6" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2294401029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1IGi5yHjBBVlQOff5FyI%2Fuploads%2FRI9aciZ5wUADl3GYrYM5%2Fa.png?alt=media&#x26;token=fa3ce172-4185-48ef-bcb9-8c2c9a4a224e" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2294401029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1IGi5yHjBBVlQOff5FyI%2Fuploads%2FKAIoq85LDqSzn9r7q8Yj%2Fa.png?alt=media&#x26;token=091068b3-fb56-435a-9cb7-8d906e1fa9e1" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2294401029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1IGi5yHjBBVlQOff5FyI%2Fuploads%2FVP5JyWFMppIrBSEXpAYy%2Fa.png?alt=media&#x26;token=a43b324e-4eaf-46c4-bb76-926f2789f948" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2294401029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1IGi5yHjBBVlQOff5FyI%2Fuploads%2FjmCcugTQGgeHb51g5V8w%2Fa.png?alt=media&#x26;token=8f7b13e5-9aea-444a-b6d4-f460d8608af0" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2294401029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1IGi5yHjBBVlQOff5FyI%2Fuploads%2FxoHgcyFdtMjt9LC9cMAk%2Fa.png?alt=media&#x26;token=727b4dae-3ed1-4fef-8c9f-dfb22792cc17" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2294401029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1IGi5yHjBBVlQOff5FyI%2Fuploads%2FdVOhDQ4WPZxYgLb7dDWp%2Fa.png?alt=media&#x26;token=a5177b36-25ce-497f-ac72-dc1d294ba94e" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2294401029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1IGi5yHjBBVlQOff5FyI%2Fuploads%2F9ut93TNJog1N6IpNUweB%2Fa.png?alt=media&#x26;token=950fb1cc-23a2-4f62-bad0-721c061e0e5d" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2294401029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1IGi5yHjBBVlQOff5FyI%2Fuploads%2FSYCwgXOjmmJ71lof64iN%2Fa.png?alt=media&#x26;token=94696ec1-7b2a-44e4-9062-002ce5493478" alt=""><figcaption></figcaption></figure>

## NFV Concept summary

* No longer isolated single purspose physical network services and functions.
* A standards-based approach to manage network services, using virtualization infrastructure.
* Network services are built from VNF aggregation.
* VNFs have their own lifecycle.
* But this is managed then at the NS level.
  * And at the inter-NS level too (both require orchestration).
* There is the need for management (and orchestration) of the network services.
  * Separate from the management of the applications/services themselves.

## Reference architecture

<figure><img src="https://2294401029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1IGi5yHjBBVlQOff5FyI%2Fuploads%2F1p6QjByUBKX0TbBZerA6%2Fa.png?alt=media&#x26;token=5fcf2e29-d5ad-4e96-af3e-b7b3d053ecf6" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2294401029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1IGi5yHjBBVlQOff5FyI%2Fuploads%2Fu337peY8WpUXjNVJ3C4a%2Fa.png?alt=media&#x26;token=31d06ed7-acf6-4360-a182-a0aec26e49f1" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2294401029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1IGi5yHjBBVlQOff5FyI%2Fuploads%2FZpxzDs1BK0rRhGqZhVOa%2Fa.png?alt=media&#x26;token=5e28d7bf-6fad-44ab-85c2-48466b12765a" alt=""><figcaption></figcaption></figure>

### VNF Descriptor

One very important tool used by the VNF Manager (VNFM).

VNF Deployment template that specifies.

* How the VNF needs to be instantiated.
* How many VM’s the VNF has?
* How those VM’s are connected.
* What are the external connection points?
* What are the requirements of the VNF, the virtualized resources, etc.
* Contains scripts that define for VNF scaling, healing, ...

Provided by the VNF vendor.

When the VNF is onboarded, the VNFD is onboarded in the VNFM.

<figure><img src="https://2294401029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1IGi5yHjBBVlQOff5FyI%2Fuploads%2FssfNqq087fTJtLFYl6zh%2Fa.png?alt=media&#x26;token=3eaf20f5-0ff9-44db-bffa-043b0cfa570f" alt=""><figcaption></figcaption></figure>

### NS Descriptor

A template that describes how the NS is composed.

* In terms of VNF.
* The VNFFG.
* Scripts and indicators that defines what the orchestrator needs to do when certain events or indicators are received.
  * These appear during the lifecycle management of the NS.

<figure><img src="https://2294401029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1IGi5yHjBBVlQOff5FyI%2Fuploads%2F76TPdHpZ10kmGWt1yTi1%2Fa.png?alt=media&#x26;token=0cebbcb9-f19a-455d-9f3a-6c3458ff9f25" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2294401029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1IGi5yHjBBVlQOff5FyI%2Fuploads%2FvF9bF3lOFdgMRYI5zkRE%2Fa.png?alt=media&#x26;token=83a433c4-6aeb-4c3b-a8f2-3b1ebde4110e" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2294401029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1IGi5yHjBBVlQOff5FyI%2Fuploads%2FERkIc5pmPgyskVcrBM9G%2Fa.png?alt=media&#x26;token=51b3f8f2-a64c-4f39-b926-c08a4fe47c15" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2294401029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1IGi5yHjBBVlQOff5FyI%2Fuploads%2F5cwiaJVxHs1Xu9HlegSW%2Fa.png?alt=media&#x26;token=254b5a4b-cc65-422b-b34b-903e574ab4d2" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2294401029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1IGi5yHjBBVlQOff5FyI%2Fuploads%2FB1kYRP1KxsgjjD7xMRPi%2Fa.png?alt=media&#x26;token=cc4b4777-1da7-4a2f-800d-b70329abef1b" alt=""><figcaption></figcaption></figure>

## Resource Management (Simplified)

<figure><img src="https://2294401029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1IGi5yHjBBVlQOff5FyI%2Fuploads%2FfVRZUulmlY5vDZ8yVCX3%2Fa.png?alt=media&#x26;token=00f7f639-e841-4d35-a052-c54e29ece0fc" alt=""><figcaption></figcaption></figure>
