h1. NOX h2. 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'. h2. Sobre o código h3. Linguagem C++ h3. Licença GPLv3 h3. Suporte a versões do OpenFLOW OpenFlow 1.0 h3. Requisitos * pacotes a serem instalados * espaço de armazenamento exigido * outros recursos necessários ao funcionamento do controlador. h3. Independência de linguagem de programação Quais linguagens são suportadas na implementação de aplicações e componentes. h3. Modularidade Quanto e que tipo de modularidade o controlador oferece. h3. Repositório Onde encontrar o código. h3. Recursos básicos do controlador Recursos oferecidos pelo controlador sem a necessidade de aplicações, como por exemplo: * GRE tunneling * VLAN support h3. 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 h3. 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. h3. 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. h2. Documentação Nível de documentação do controlador, incluindo tutoriais e exemplos (tanto de estruturas quanto de aplicações). h2. Suporte junto ao OpenStack Como o ambiente estruturado se baseia no OpenStack, é interessante saber qual é o tipo de suporte oferecido a essa ferramenta. h2. Quem usa Público do controlador h2. Quem está por trás Empresas, consórcio, comunidade, universidade, ... h2. ú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. h2. Outras características Características que não se adequam a nenhuma das anteriores. h2. 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 h2. 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 com suporte a OpenFlow 1.3 (em desenvolvimento, último commit 07/05/2013) https://github.com/CPqD/nox13oflib h2. NOX API reference http://www.noxrepo.org/_/nox-classic-doxygen/index.html (gerado pelo doxygen) h2. Repositório GitHub https://github.com/noxrepo/nox h2. 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 h2. Tutoriais * Create OpenFlow network with multiple PCs/NetFPGAs http://archive.openflow.org/wp/deploy-labsetup/ * NOX OpenFlow Controller Install on Ubuntu 12.04 (antigo já, talvez esteja no repositório) http://mytestbed.net/projects/openflow/wiki/Installing_a_NOX_controller http://networkstatic.net/nox-openflow-controller-install-on-ubuntu-12-04-precise-lts/