POX » History » Version 3

Thiago Paiva, 09 Oct 2013 10:14

1 1 Thiago Paiva
h1. POX
2 1 Thiago Paiva
3 1 Thiago Paiva
4 3 Thiago Paiva
h2. Sobre o código
5 3 Thiago Paiva
6 3 Thiago Paiva
7 3 Thiago Paiva
h3. Linguagem
8 3 Thiago Paiva
9 3 Thiago Paiva
Linguagem utilizada para o desenvolvimento.
10 3 Thiago Paiva
11 3 Thiago Paiva
12 3 Thiago Paiva
h3. Licença
13 3 Thiago Paiva
14 3 Thiago Paiva
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.
15 3 Thiago Paiva
16 3 Thiago Paiva
17 3 Thiago Paiva
h3. Suporte a versões do OpenFLOW
18 3 Thiago Paiva
19 3 Thiago Paiva
* Quais são as versões de OpenFlow suportadas pelo controlador / framework. 
20 3 Thiago Paiva
* Como isso é implementado
21 3 Thiago Paiva
22 3 Thiago Paiva
23 3 Thiago Paiva
h3. Requisitos
24 3 Thiago Paiva
25 3 Thiago Paiva
* pacotes a serem instalados
26 3 Thiago Paiva
* espaço de armazenamento exigido
27 3 Thiago Paiva
* outros recursos necessários ao funcionamento do controlador.
28 3 Thiago Paiva
29 3 Thiago Paiva
30 3 Thiago Paiva
h3. Independência de linguagem de programação 
31 3 Thiago Paiva
32 3 Thiago Paiva
Quais linguagens são suportadas na implementação de aplicações e componentes.
33 3 Thiago Paiva
34 3 Thiago Paiva
35 3 Thiago Paiva
h3. Modularidade
36 3 Thiago Paiva
37 3 Thiago Paiva
Quanto e que tipo de modularidade o controlador oferece.
38 3 Thiago Paiva
39 3 Thiago Paiva
40 3 Thiago Paiva
h3. Repositório
41 3 Thiago Paiva
42 3 Thiago Paiva
Onde encontrar o código.
43 3 Thiago Paiva
44 3 Thiago Paiva
45 3 Thiago Paiva
h3. Recursos básicos do controlador
46 3 Thiago Paiva
47 3 Thiago Paiva
Recursos oferecidos pelo controlador sem a necessidade de aplicações, como por exemplo:
48 3 Thiago Paiva
* GRE tunneling
49 3 Thiago Paiva
* VLAN support
50 3 Thiago Paiva
51 3 Thiago Paiva
52 3 Thiago Paiva
h3. Aplicações
53 3 Thiago Paiva
54 3 Thiago Paiva
Componentes disponíveis que acrescentam ferramentas ao controlador, como por exemplo:
55 3 Thiago Paiva
* topology discovery
56 3 Thiago Paiva
* MAC based segregation
57 3 Thiago Paiva
58 3 Thiago Paiva
59 3 Thiago Paiva
h3. Testes
60 3 Thiago Paiva
61 3 Thiago Paiva
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. 
62 3 Thiago Paiva
63 3 Thiago Paiva
64 3 Thiago Paiva
h3. Disponibilidade nas distribuições GNU/Linux 
65 3 Thiago Paiva
66 3 Thiago Paiva
Disponibilidade e facilidade de instação nas distribuição GNU/Linux relevantes atuais. 
67 3 Thiago Paiva
68 3 Thiago Paiva
* disponível nos repositórios da distribuição?
69 3 Thiago Paiva
* versão dos pacotes disponíveis
70 3 Thiago Paiva
* ênfase nas distros Debian e Ubuntu.
71 3 Thiago Paiva
72 3 Thiago Paiva
73 3 Thiago Paiva
h2. Documentação
74 3 Thiago Paiva
75 3 Thiago Paiva
Nível de documentação do controlador, incluindo tutoriais e exemplos (tanto de estruturas quanto de aplicações).
76 3 Thiago Paiva
77 3 Thiago Paiva
78 3 Thiago Paiva
h2. Suporte junto ao OpenStack
79 3 Thiago Paiva
80 3 Thiago Paiva
Como o ambiente estruturado se baseia no OpenStack, é interessante saber qual é o tipo de suporte oferecido a essa ferramenta.
81 3 Thiago Paiva
82 3 Thiago Paiva
83 3 Thiago Paiva
h2. Quem usa
84 3 Thiago Paiva
85 3 Thiago Paiva
Público do controlador
86 3 Thiago Paiva
87 3 Thiago Paiva
88 3 Thiago Paiva
h2. Quem está por trás 
89 3 Thiago Paiva
90 3 Thiago Paiva
Empresas, consórcio, comunidade, universidade, ...
91 3 Thiago Paiva
92 3 Thiago Paiva
93 3 Thiago Paiva
h2. último release / commit
94 3 Thiago Paiva
95 3 Thiago Paiva
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.
96 3 Thiago Paiva
97 3 Thiago Paiva
98 3 Thiago Paiva
h2. Outras características
99 3 Thiago Paiva
100 3 Thiago Paiva
Características que não se adequam a nenhuma das anteriores.
101 3 Thiago Paiva
102 3 Thiago Paiva
103 3 Thiago Paiva
104 3 Thiago Paiva
105 3 Thiago Paiva
106 3 Thiago Paiva
107 3 Thiago Paiva
108 3 Thiago Paiva
109 3 Thiago Paiva
110 1 Thiago Paiva
h2. Overview
111 1 Thiago Paiva
112 1 Thiago Paiva
* irmão mais novo do NOX
113 1 Thiago Paiva
* plataforma para desenvolvimento rápido e prototipagem de controladores OpenFlow (framework)
114 1 Thiago Paiva
* linguagem: python
115 1 Thiago Paiva
* alvo principal é a pesquisa
116 1 Thiago Paiva
117 1 Thiago Paiva
* POX wiki: instalação, componentes, APIs, openflow e FAQ (bem completo)
118 1 Thiago Paiva
https://openflow.stanford.edu/display/ONL/POX+Wiki
119 1 Thiago Paiva
120 1 Thiago Paiva
* mininet + POX
121 1 Thiago Paiva
http://mininet.org/blog/2013/06/03/automating-controller-startup/
122 1 Thiago Paiva
123 1 Thiago Paiva
* Configuring an OpenFlow POX SDN Controller and HP Switches
124 1 Thiago Paiva
http://networkstatic.net/configuring-an-openflow-pox-sdn-controller-and-hp-switches/
125 1 Thiago Paiva
126 1 Thiago Paiva
127 1 Thiago Paiva
h2. Código no GitHub 
128 2 Thiago Paiva
129 1 Thiago Paiva
https://github.com/noxrepo/pox
130 1 Thiago Paiva
131 1 Thiago Paiva
132 1 Thiago Paiva
h3. Requerimentos
133 1 Thiago Paiva
134 1 Thiago Paiva
* Python 2.7
135 1 Thiago Paiva
136 1 Thiago Paiva
137 1 Thiago Paiva
h2. Usado para
138 1 Thiago Paiva
139 1 Thiago Paiva
* SDN debugging
140 1 Thiago Paiva
* network virtualization
141 1 Thiago Paiva
* projeto de controladores
142 1 Thiago Paiva
* modelagem de programação
143 1 Thiago Paiva
* desenvolvimento de um moderno controlador SDN
144 1 Thiago Paiva
145 1 Thiago Paiva
146 1 Thiago Paiva
h2. Características
147 1 Thiago Paiva
148 1 Thiago Paiva
* interface pythonica para OpenFlow
149 1 Thiago Paiva
* componentes reutilizáveis (modularidade) (recursos prontos)
150 1 Thiago Paiva
* não dependente de plataforma (instalar PyPy)
151 1 Thiago Paiva
* suporta mesmas ferramentas de visualização do NOX
152 1 Thiago Paiva
* melhor desempenho que o NOX para aplicações escritas em python, porém mais lento que NOX/C++
153 1 Thiago Paiva
* suporte para OpenFlow 1.0
154 1 Thiago Paiva
* especial suporte para  Open vSwitch
155 1 Thiago Paiva
156 1 Thiago Paiva
157 1 Thiago Paiva
h2. Funcionamento
158 1 Thiago Paiva
159 1 Thiago Paiva
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'.
160 1 Thiago Paiva
161 1 Thiago Paiva
Os módulos podem estar nos diretórios 'pox' e 'ext', além dos diretórios normalmente vigiados pela instalação do python.
162 1 Thiago Paiva
163 1 Thiago Paiva
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()'.
164 1 Thiago Paiva
165 1 Thiago Paiva
166 1 Thiago Paiva
h2. Componentes
167 1 Thiago Paiva
168 1 Thiago Paiva
* py: interface python (debug)
169 1 Thiago Paiva
* forwarding.hub: $10 hub
170 1 Thiago Paiva
* forwarding.l2_learning: L2 learning switch
171 1 Thiago Paiva
* forwarding.l2_pairs: L2 learning switch based on MAC addresses
172 1 Thiago Paiva
* forwarding.l3_learning: "L3-lerning-switchy-thing"
173 1 Thiago Paiva
* forwarding.l2_multi: 
174 1 Thiago Paiva
...
175 1 Thiago Paiva
176 1 Thiago Paiva
h2. Tutoriais
177 1 Thiago Paiva
178 1 Thiago Paiva
* openflow tutorial with pox
179 1 Thiago Paiva
http://blog.pythonicneteng.com/2013/02/openflow-tutorial-with-pox.html