NOX

OBSERVAÇÃO

Existem duas versões do NOX. A versão antiga e descontinuada foi renomeada para NOX-Classic. Porém todos os materiais que foram produzidos para essa versão tratam-na com o nome que era corrente, ou seja, apenas por NOX. Isso causa um problema sério: em qualquer conteúdo referente ao NOX não se consegue saber se é sobre a versão antiga ou a nova, a menos que seja dito explicitamente ou que o NOX seja chamado de 'new NOX'.

Sobre o código

Linguagem

C++

Licença

GPLv3

Suporte a versões do OpenFLOW

OpenFlow 1.0

Requisitos

  • pacotes a serem instalados
  • espaço de armazenamento exigido
  • outros recursos necessários ao funcionamento do controlador.

Independência de linguagem de programação

Quais linguagens são suportadas na implementação de aplicações e componentes.

Modularidade

Quanto e que tipo de modularidade o controlador oferece.

Repositório

Onde encontrar o código.

Recursos básicos do controlador

Recursos oferecidos pelo controlador sem a necessidade de aplicações, como por exemplo:
  • GRE tunneling
  • VLAN support

Aplicações

  • jsonmessenger: interact with NOX using JSON.
  • messenger: interact with NOX.
  • simple_cc_app
  • simple_app
  • snmp: SNMP get/set support in NOX More...
  • Authenticator
  • Bindings_Storage: mirrors the Authenticator's internal data structures within the NDB.
  • discovery: LLDP discovery application for topology inference.
  • hostip: store IP address of hosts.
  • hosttracker: Track locations of host (ethernet)Track last n known locations of host attachment.
  • trackhost_pktin: Tracks host location using packet in.
  • lavi: Components that allows network state to be enquired.
  • Monitoring: Collects and maintains switch and port stats for the network.
  • datapathmem: Datapath memory to memorize datapath informationAlso join events of the datapath.
  • linkload: tracks port stats of links and its loadRefers to links using its source datapath id and port.
  • switchrtt: meaure RTT of switch in networkCan configure the interval of probe at runtime using the interval option (giving interval in seconds).
  • flowroute_record: record of flow and associated routeDoes not handle detection of flow and route nor its expiration/deletion.
  • routeinstaller: install route.
  • simplerouting: routing with dependencies on authenticatorCan choose to set flow installed into flowroute_record with arguments
  • Routing_module: utility component that can be called to retrieve a shortest path route and/or to set up flow entries in the network with Openflow actions to route a flow.
  • switchstats: collects and maintains switch and port stats for the network.
  • flowlog: records all flows in networkTo ensure flow removed is sent (in openflow-default.hh).
  • rttlog: Logs switch RTTLogs every switchrtt's interval, i.e., probe all switches once.
  • tablog: Component that logs tables of informationComponent dumps data into one of the tablog_dump format.
  • test1
  • test2
  • Topology: the current network topology.
  • User_Event_Log: The goal of the user_event_log is to let applications easily generate 'network event log' messages that include high-level network names.
  • webserver

Testes

Existência de testes de unidades no codigo (scripts ou códigos), geralmente em uma pasta em separado, que validam e testam o código desenvolvido.

Disponibilidade nas distribuições GNU/Linux

Disponibilidade e facilidade de instação nas distribuição GNU/Linux relevantes atuais.

  • disponível nos repositórios da distribuição?
  • versão dos pacotes disponíveis
  • ênfase nas distros Debian e Ubuntu.

Documentação

Nível de documentação do controlador, incluindo tutoriais e exemplos (tanto de estruturas quanto de aplicações).

Suporte junto ao OpenStack

Como o ambiente estruturado se baseia no OpenStack, é interessante saber qual é o tipo de suporte oferecido a essa ferramenta.

Quem usa

Público do controlador

Quem está por trás

Empresas, consórcio, comunidade, universidade, ...

último release / commit

Uma das formas de se ter noção de quanto o desenvolvimento ainda está ativo é procurar pela data da última atualização de código no repositório.

Outras características

Características que não se adequam a nenhuma das anteriores.

Overview

Controlador praticamente desenvolvido em conjunto com OpenFlow.

  • Oferece uma API para OpenFlow em C++
  • Oferece rápida e assincrona IO (entrada saída)
  • Está disponível nas recentes distribuições Ubuntu (mas é possível instalar na Debian e RHEL)
  • Inclui componentes exemplos:
    • Topology discovery
    • Learning switch
    • Network-wide switch

Versões

  • NOX-Classic: deprecated. Suporte para C++ e Python.
  • NOX (aka 'new NOX'): suporte apenas para C++. Código mais limpo. Poucos applicativos.

NOX API reference

http://www.noxrepo.org/_/nox-classic-doxygen/index.html

(gerado pelo doxygen)

Repositório GitHub

https://github.com/noxrepo/nox

Documentação do NOX-Classic

Dizem que apesar de ultrapassado, a documentação contida no wiki do NOX-Classic ainda pode ajudar, então:
https://github.com/noxrepo/nox-classic/wiki

Tutoriais

Also available in: PDF HTML TXT