A atual estrutura da Internet é densamente povoada por grande variedade de hardware proprietário. Para lançar novos serviços de redes, os operadores de rede (Network Operators) devem, além do desenvolvimento do software, encontrar espaço para posicionar o hardware. Após o posicionamento, o custo de manutenção e tempo de vida cada vez menores do hardware tornam necessário o desenvolvimento de uma nova técnica que facilite, entre outros fatores, a instalação, manutenção e encadeamento de funções de rede. Esta estrutura é dita calcificada devido, majoratariamente, pelo acoplamento entre software e hardware.
Network Function Virtualization (NFV) ou Virtualização de Funções de Rede se refere ao paradigma ou tecnologia que busca virtualizar serviços comumente encontrados em redes de computadores para que esses serviços possam ser instanciados e executados em hardware não-proprietário. A abordagem escolhida é substituir as funções de rede que são normalmente implementadas em "middle-boxes" (literalmente, caixas intermediárias) por instâncias virtualizadas em hardware de propósito geral, tais quais firewall, NAT (Network Address Translator), balanceador de carga...
O conceito de NFV foi inicialmente definido em um White Paper publicado pela European Telecommunications Standards Institute (ETSI) em outubro de 2012. A tecnologia busca solucionar problemas comumente encontrados por ofertadores de serviços e administradores de redes, como:
O custo de instalação da função de rede pode ser reduzido ao se desenvolver versões virtuais de funções de rede que funcionem em Commercial-Off-The-Shelf (COTS) Hardware (literalmente hardware comercial saído da prateleira).
Devido ao estudo recente de NFV, novas literaturas se concentram em pontos diferentes da tecnologia. Os focos mais comuns são:
No contexto de virtualização de recursos de rede, ao invés de virtualizar sistemas operacionais, virtualizam-se funções de rede, como firewall, NAT, balanceador de carga, CDN, IDS, etc. O que antes era executado por hardwares especializados passa a ser executado em computadores de uso genérico.
A principio, todas as funções de rede podem ser consideradas para a virtualização. Essas instancias virtualizadas são conhecidas como Virtual Network Functions (VNFs), e podem prover as mesmas funcionalidades que suas correspondentes instancias físicas.
Virtual Network Functions (VNF) ou Funções Virtuais de Rede são funções de rede instanciadas na forma de software. Podem ser vistas como as funções de redes implementadas no paradigma NFV. VNFs devem prover as mesmas funcionalidades que suas instâncias físicas correspondentes e devem ser indistinguíveis para outros elementos da rede.
Para facilitar a compreensão, o estudo e implementação de NFV pode ser descrito em camadas através de uma abordagem bottom up.
Network Function Virtualization Infrastructure (NFVI) corresponde, em particular, ao plano de dados, cuja função é encaminhar dados e prover recursos para outros serviços de rede.
Physical Infrastructure Layer ou Camada Física de Infraestrutura é composta por servidores de propósito geral, responsáveis por prover recursos computacionais, de armazenamento e de rede para as camadas superiores.
Virtualization Layer ou Camada de Virtualização é composta pela plataforma que gerencia os recursos físicos que cada VNF pode utilizar. O Hypervisor é o software que permite controlar e regular esses recursos. Vale notar a diferença entre o posicionamento do Hypervisor para Software Defined Networks (SDN) e Network Function Virtualization. Para SDNs, o Hypervisor é posicionado entre os planos de dado e de controle; enquanto para NFVs, o Hypervisor é posicionado entre a Camada Física de Infraestrutura e a Camada Virtual de Infraestrutura. Exemplos comuns de Hypervisors são:
Virtual Infrastructure Layer ou Camada Virtual de Infraestrutura será a camada de localização das NFVs. Esta camada possui os recursos virtuais cedidos pelo Hypervisor e necessários para o funcionamento das funções virtuais.
Enquanto Management and Orchestration (MANO) corresponde ao plano de controle, cuja responsabilidade é construir conexões entre diversas VNFs e orquestrar os recursos na NFVI.
A MANO pode ser descrita em função de três elementos principais:[6]
Por fim, a Virtual Network Function Layer ou Camada de Virtualização de Função de Rede tem o trabalho de instanciar as funções e abstrair a existência das camadas físicas.
Atualmente, para disponibilizar um serviço em redes de computadores, se faz necessário a configuração e instanciação de funções de rede manualmente; visto que, usualmente, um serviço específico é formado encadeando várias funções de rede em uma ordem específica, o que pode gerar erros e demandar tempo. Visando a resolver esse problema, surge uma nova abordagem conhecida como Encadeamento de Serviços em Rede ou Network Service Chaining (NSC). Desta forma, integrando as tecnologias de NFV e SDN, torna-se possível direcionar o fluxo de dados dinamicamente através de gráficos de serviços.
A iniciativa de integrar as tecnologias SDN e NFV permite configurar e reconfigurar a rede através de um controlador centralizado,criando um conjunto ordenado de abstrações de Funções de Serviço ou Service Functions (SF). As Funções de Serviço podem ser aplicadas aos fluxos de pacotes selecionados. Desta maneira é possível atravessar em uma determinada ordem cada uma das funções de rede implementadas pelas VNFs.
Em um encadeador de funções, o classificador possui a habilidade para identificar e classificar o tráfego antes de encaminhá-lo para o processamento. O plano de controle é responsável por definir a topologia, políticas e o caminho do fluxo pelo gráfico de serviço. Os Encaminhadores de Funções de Serviço ou Service Function Forwarder (SFF), têm a função de determinar o destino do tráfego. Dessa forma, o classificador é colocado no início do tráfego e gerenciado pelo controlador SDN, definindo uma cadeia de serviços através de uma etiqueta adicionada no cabeçalho do pacote (Cabeçalho de Serviço de Rede - NSH), com esta etiqueta é possível determinar o tipo de serviço aplicado ao fluxo e encaminhá-lo às SFs em sua respectiva ordem.
O uso de NFV é uma excelente saída para a diminuição dos custos de CAPEX e OPEX causados pela dependência de equipamento dedicado para cada aplicação. Utilizando o paradigma NFV, um hardware genérico pode realizar diversas funções de rede, com a possibilidade de modificá-las de acordo com as necessidades do provedor de maneira fácil e rápida, gerando assim uma grande flexibilidade na rede e facilitando a implementação de novos serviços.
Network Function Virtualization ou Virtualização de Funções de Rede é uma tecnologia que propõe a implementação de funções de rede comumente realizadas por middle-boxes através de software. Ela busca diminuir gastos de instalação e operação, além de possibilitar a automatização e manutenção remota de administradores de rede.
O Hypervisor fica localizado entre as camadas física e virtual de infraestrutura. Ele é utilizado para monitorar e gerenciar os recursos físicos cedidos às VNFs.
Firewall, NAT e balanceador de carga.
NFVI (Network Function Virtualization Infrastructure), VNF (Virtual Network Function) e NFV MANO (Network Function Virtualization Management and Orchestration).
O uso de NFV permite a implementação de funções de rede em hardware COTS (Commercial off-the-shelf). Isso permite que o provedor desenvolva apenas o software necessário para implementar suas funções, reduzindo assim o custo de fabricação e operação (CAPEX e OPEX).