h1. POX h2. Sobre o código h3. Linguagem Linguagem utilizada para o desenvolvimento. h3. Licença Licença em que o código foi liberado. A preferência é por licenças livres, facilitando assim o estudo e desenvolvimento de aplicações ou até mesmo de correções de problemas. h3. Suporte a versões do OpenFLOW * Quais são as versões de OpenFlow suportadas pelo controlador / framework. * Como isso é implementado 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 Componentes disponíveis que acrescentam ferramentas ao controlador, como por exemplo: * topology discovery * MAC based segregation 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 * irmão mais novo do NOX * plataforma para desenvolvimento rápido e prototipagem de controladores OpenFlow (framework) * linguagem: python * alvo principal é a pesquisa * POX wiki: instalação, componentes, APIs, openflow e FAQ (bem completo) https://openflow.stanford.edu/display/ONL/POX+Wiki * mininet + POX http://mininet.org/blog/2013/06/03/automating-controller-startup/ * Configuring an OpenFlow POX SDN Controller and HP Switches http://networkstatic.net/configuring-an-openflow-pox-sdn-controller-and-hp-switches/ h2. Código no GitHub https://github.com/noxrepo/pox h3. Requerimentos * Python 2.7 h2. Usado para * SDN debugging * network virtualization * projeto de controladores * modelagem de programação * desenvolvimento de um moderno controlador SDN h2. Características * interface pythonica para OpenFlow * componentes reutilizáveis (modularidade) (recursos prontos) * não dependente de plataforma (instalar PyPy) * suporta mesmas ferramentas de visualização do NOX * melhor desempenho que o NOX para aplicações escritas em python, porém mais lento que NOX/C++ * suporte para OpenFlow 1.0 * especial suporte para Open vSwitch h2. Funcionamento pox.py recebe uma lista de módulos na linha de comando e chama a função 'launch()' deles caso ela exista e depois muda para estado 'up'. Os módulos podem estar nos diretórios 'pox' e 'ext', além dos diretórios normalmente vigiados pela instalação do python. Opções (--) podem ser acrescidas após o nome do módulo e serão passadas como parâmetro para o chamado da função 'launch()'. h2. Componentes * py: interface python (debug) * forwarding.hub: $10 hub * forwarding.l2_learning: L2 learning switch * forwarding.l2_pairs: L2 learning switch based on MAC addresses * forwarding.l3_learning: "L3-lerning-switchy-thing" * forwarding.l2_multi: ... h2. Tutoriais * openflow tutorial with pox http://blog.pythonicneteng.com/2013/02/openflow-tutorial-with-pox.html