FlowVisor

          O FlowVisor [3] é um mecanismo de virtualização de redes OpenFlow. A virtualização de redes é um assunto bastante estudado atualmente [7]. Ela é importante para permitir que em uma mesma infraestrutura física possam coexistir redes com diferentes mecanismos de encaminhamento, endereçamentos, entre outros. Assim, os recursos da infraestrutura necessitam ser divididos entre as diferentes fatias da rede. Um exemplo de aplicação de virtualização das redes OpenFlow é permitir, por exemplo, que diferentes tipos de experimentos sejam conduzidos ao mesmo tempo na mesma rede de computadores de uma universidade. Os recursos da infraestrutura divididos pelo FlowVisor são [3]:
              -Banda Passante: A banda passante de um enlace deve ser dividida entre as fatias da rede.
              -Topologia: Cada fatia deverá possuir sua própria visão dos nós da rede e a conectividade entre eles.
              -Tráfego: O tráfego de uma fatia não deve interferir na outra. Esse tráfego pode ser definido de várias formas como, por exemplo, todos os pacotes oriundos de um conjunto de endereços, todo o tráfego de um grupo de usuários ou algo mais específico como todo o tráfego HTTP.
              -CPU dos elementos da rede: A CPU dos comutadores e roteadores da rede deverão ser divididas entre as fatias. Isso é importante, por exemplo, em casos onde os pacotes passam pelo chamado slow-path, como no caso de pacotes IP com opções, no qual a CPU do comutador necessita ser utilizada.
              -Tabela de Encaminhamento: Devido à capacidade limitada dos comutadores para armazenarem regras de encaminhamento, há necessidade de controlar esses recursos entre as fatias.
           Em uma rede com o FlowVisor cada fatia possui um controlador OpenFlow como o NOX (Seção NOX). O FlowVisor é um controlador especial que atua como um proxy entre os controladores NOX e os comutadores da rede. Todas as mensagens OpenFlow, tanto dos controladores para os comutadores como no sentido oposto, são interceptadas pelo FlowVisor que decidirá o que fazer com as mensagens baseado nas políticas de cada fatia. Na rede virtualizada pelo FlowVisor não é necessária a modificação dos controladores nem dos comutadores da rede. A interceptação de mensagem é realizada de forma transparente a esses elementos.
          Um exemplo de operação do FlowVisor está mostrado na Figura 4. Nessa figura a rede é dividida entre três controladores. Dois deles são para os experimentos dos pesquisadores Alice e Bob e o outro controla o tráfego de produção. Bob realiza um experimento usando seu controlador que, por exemplo, atua como um balanceador de carga de tráfego HTTP. Nesse experimento o controlador dissemina tráfego para todos os servidores de um conjunto especificado previamente. As políticas da fatia da rede dada para o Bob são feitas de tal forma que o seu controlador só enxerga os fluxos provenientes de um determinando IP de origem. Devido à transparência do FlowVisor, porém, o controlador do Bob acredita que pode controlar os fluxos para todo tráfego HTTP vindo de qualquer IP de origem. Assim, a exemplo da Figura 4, quando o controlador do Bob envia uma mensagem para adicionar uma entrada na Tabela de Fluxos de um comutador, o FlowVisor intercepta essa mensagem (número 1). Após a interceptação, o FlowVisor consulta as políticas da fatia do Bob (número 2), e reescreve essa entrada para incluir apenas o tráfego oriundo do IP de origem permitido para Bob. Após isso envia uma mensagem com essa entrada para o comutador (número 3). Da mesma forma, as mensagens enviadas dos comutadores para o controlador do Bob são interceptadas pelo FlowVisor (número 4) [3].

Topo

Figura 4 - Exemplo de uso do FlowVisor. Adaptada de [3].