O documento descreve um algoritmo proposto para verificar reachability em redes OpenFlow representando regras de switches de forma concisa usando bits. As regras são armazenadas em uma tabela hash usando os bits de match como chave e o bit de ação como valor. Para verificar se um pacote passa, compara-se os bits de match do pacote com as chaves da tabela e faz AND entre o valor encontrado e o bit do pacote.
2. Artigos lidos na área de verificação de redes
• Network Troubleshooting with SDN-RADAR
Avanesov,T; Kantor,M; Gheorghe,G; Popoviciu,C; Palattella,M.R.; Engel,T
Monitoramento da rede feito pelos Sonar Agents (Scripts que coletam
dados pela experiência de usuários emserviços específicos).
• FlowChecker: Configuration Analysis and Verification of Federated
OpenFlow Infrastructures
Al-Shaer,E; Al-Haj,S
Configuração e verificação das infraestruturas do openflow utilizando
BDD's, nele, a rede é configurada como uma máquina de estados.
• VeriFlow: Verifying Network-Wide Invariants in Real Time
Khurshid,A; Zou,X; Zhou,W;Caesar,M; Godfrey,P.B.
Divisão da rede em classes equivalentes, tendo como umdos problemas
a incerteza se dois pedaços, gerados pela divisão, se sobrepõem.
3. Artigos lidos na área de verificação de redes
Detecção de Loop's e verificação de Reachability
• Header Space Analysis: Static Checking For Networks
Kazemian,P; Varghese,G; McKeown,N.
É feita a criação de um predicado que representa todas as regras
de determinado switch, daí pode-se fazer detecção de loop's
(inserção de pacote totalmente genérico na rede) e verificação de
reachability de maneira eficiente, já que utiliza somente valores
binários para a representação da regra.
• Efficient Verification of Network Reachability Properties
Yang,H.
É feita a decomposição das regras do switch em predicados
subatômicos, a intersecção entre os predicados subatômicos gera um
predicado, e a união dos predicados forma a regra para o switch
(formada apenas por bit's zeros e uns).
4. Utilização do Alloy
• A síntaxe do Alloy foi aprendida via slides disponibilizados pelo MIT
http://alloy.mit.edu/alloy/tutorials/day-course/
• O maior problema, além da síntaxe, encontrado na utilização do
Alloy, foi adaptar os dados, gerados pela flowtable, para fazer
verificações lógicas.
• Alguns pequenos modelos de rede foram gerados (próximo slide),
porémnão foi dado procedência ao trabalho como uso do Alloy.
6. Novo problema abordado
O novo problema abordado, na bolsa de IC, na área de
verificação de redes, é o de reachability (verificar se umdeterminado
pacote que entra emswitch A chega ou não emseu destino).
Antes de iniciar o algoritmo para verificação de reachability, foram
lidos dois artigos na área, os quais são citados no terceiro slide.
A ideia de ambos os artigos é criar algum modo de criar um
identificador para o switch (regra base do switch), de maneira que
não se precise fazer testes exaustivos com os pacotes que entram
na rede.
7. Algoritmo proposto para verificação de
reachability emredes comswitches openflow
A ideia base do algoritmo encontra-se em modelar a rede apenas
por valores booleanos, para que todas as operações lógicas seja do
tipo bit a bit. Para isso, tem-se utilizado a classe BitVector 3.4.4 para
Python (https://pypi.python.org/pypi/BitVector/3.4.4).
Para cada regra contida no switch, cria-se uma regra concisa, de
33 bits, sendo 32 bits para representar o match e 1 bit (por
enquanto), para representar o action.
As regras serão armazenadas em uma tabela hash, permitindo
acesso às chaves (match) em tempo linear. Os valores da tabela
hash serão representados pelos bit's referentes ao action de cada
regra.
8. Algoritmo proposto para verificação de
reachability emredes comswitches openflow
A montagem da regra base para cada switch será feita da
seguinte maneira:
Todas as informações referentes ao match de uma regra
contida no switch serão convertidas para números binários de 32
bits. Como ainda estamos trabalhando com actions do tipo allow
e deny, os mesmos serão representados por um bit de valor 1 e
0, respectivamente. Após essa conversão, dentro da regra é feita
a intersecção bit a bit entre todas as informações referentes ao
match da regra. Com os 33 bits referentes a cada regra é
montada uma tabela hash, os 32 bits mais significativos servirão
como chave e o bit menos significativo será o valor.
9. Algoritmo proposto para verificação de
reachability emredes comswitches openflow
O pacote também será moldado com 33 bits, sendo que os
32 bits serão para o match do pacote e o bit menos significativo
será sempre 1.
Tendo a tabela montada, para saber se determinado pacote
passa ou não, primeiramente é feito o acesso à tabela hash, para
encontrar os 32 bits mais significativos da tabela que, fazendo a
operação de XNOR bit a bit com os 32 bits mais significativos do
pacote, resulta em 32 bits ligados em 1. Ao ter-se encontrada a
regra referente ao pacote na tabela, é feita a operação lógica
AND entre o valor da tabela e o bit menos significativo do pacote,
como o bit menos significativo do pacote é sempre 1, se a
operação de AND resultar em0, o pacote não passa.
10. Próxima etapa
A próxima etapa será a finalização do verificador de
reachability e fazer testes funcionais e de desempenho do
mesmo.