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¶