NOX

          O NOX [2] é uma proposta de sistema operacional para redes, possuindo como objetivo facilitar o gerenciamento de redes de grande escala. O conceito de sistema operacional de rede pode ser entendido pela analogia com os sistemas operacionais utilizados nos computadores. As ideias básicas dos sistemas operacionais de computadores são oferecer uma interface de alto nível para as aplicações utilizarem os recursos de hardware e também controlar a interação entre essas aplicações. A interface de alto nível oferecida na primeira ideia tornou os programas mais fáceis de serem desenvolvidos e de executarem em diferentes plataformas de hardware. Isso ocorre pois os programadores não precisam mais se preocupar com interações de baixo nível da aplicação com o hardware, e escrevem seus programas utilizando primitivas genéricas que funcionam em diversas arquiteturas. Em redes de computadores o gerenciamento é realizado por configurações de baixo nível que depende do conhecimento da rede, análogo às aplicações desenvolvidas sem os sistemas operacionais. Como exemplo, o controle de acesso aos usuários de uma rede utilizando uma ACL (Access Control List - Lista de Controle de Acesso), necessita do conhecimento do endereço IP do usuário, que é um parâmetro de baixo nível dependente da rede . Portanto, existe a necessidade de um sistema operacional de redes que forneça interfaces para controlar e observar uma rede, semelhantes às interfaces de leitura e escrita em diversos recursos oferecidos por um sistema operacional de computador [2]. Assim, o sistema operacional de redes deverá fornecer uma interface genérica de programação que permite o desenvolvimento de aplicações de gerenciamento da rede. Esse sistema centraliza o gerenciamento da rede, necessitando haver uma grande preocupação com sua escalabilidade.

Topo

           O NOX é um sistema operacional de rede que procura atender os requisitos já citados. Esse sistema foi desenvolvido para ser executado nos controladores de redes OpenFlow. Apesar de o objetivo principal do OpenFlow ser o experimento de novas propostas, o NOX pode ser utilizado também no gerenciamento de redes de produção. A Figura 3 ilustra os principais componentes de uma rede baseada no NOX. Esse tipo de redes possui um ou mais servidores executando o NOX. Cada um realiza o papel do controlador OpenFlow mostrado na Seção Funcionamento. Esses controladores possuem aplicações executando a partir do NOX. Todos os controladores compartilham uma única Visão da Rede, que é mantida na base de dados de um dos servidores. A Visão da Rede é montada com base em informações da rede coletadas pelo NOX e é usada na tomada de decisões pelas aplicações de gerenciamento. As informações coletadas podem ser a topologia dos comutadores, a localização dos elementos da rede (e.g usuários, clientes, middleboxes) e os serviços oferecidos (e.g HTTP ou NFS). As aplicações irão manipular o tráfego da rede a partir da configuração remota dos comutadores OpenFlow. Esse controle é realizado no nível de fluxo, ou seja, sempre quando um determinado controle é realizado no primeiro pacote de um fluxo todos os outros pacotes desse fluxo sofrerão a mesma ação.

Figura 3 - Componentes de uma rede baseada no NOX. Adaptada de [2].
Topo

          O funcionamento da rede baseada no NOX ocorre da seguinte forma: ao receber um pacote, o comutador verifica o cabeçalho do pacote para ver se ele está definido em sua Tabela de Fluxos. Se estiver definido, o comutador executa a ação especificada na Tabela de Fluxos e atualiza os contadores referentes à estatística do fluxo. Senão, encapsula o pacote e o envia para o NOX. O NOX então será responsável por adicionar uma entrada na Tabela de Fluxos do comutador, identificando o fluxo referente aquele pacote. Dependendo da aplicação, o NOX pode não adicionar essa entrada, forçando que os comutadores enviem sempre para o NOX os pacotes que receberem [2]. Isso se justifica, por exemplo, no caso das Redes Ativas como visto na Seção Aplicações.           Como exemplo de aplicação que pode ser desenvolvida para o NOX pode ser citado o gerenciamento de consumo de energia [2]. Por exemplo, nesse tipo de gerenciamento pode ser reduzida a velocidade de enlaces sub-utilizados ou esses enlaces podem ser simplesmente desligados. Com a Visão da Rede do NOX, na qual é conhecida uma visão global da rede e as rotas em uso, poder se adquirir conhecimento necessário para realizar tais ações. Além disso, essas ações podem ser auxiliadas por aplicações desenvolvidas para o NOX, como redução de velocidade dos enlaces ou migração dos fluxos de um comutador que será desligado para outro comutador em uso.