Como analisar pacotes OpenFlow usando o arquivo de captura tcpdump programaticamente

3

Estou trabalhando com pacotes OpenFlow e estou analisando a rede via tcpdump.

Atualmente, uso a GUI WireShark para analisar o arquivo de captura gerado e ele atende à minha necessidade.

No entanto, eu queria saber se o WireShark tem uma API para que o mesmo possa ser feito através de um script em vez da GUI (estou essencialmente tentando extrair certos parâmetros do OpenFlow e automatizar o processo de verificação do meu sistema)

    
por spiritusozeans 20.06.2013 / 18:39

2 respostas

3

A alternativa de linha de comando ao WireShark é tshark (semelhante em função ao tcpdump).

Este blog teve o suficiente para obter eu comecei.

Um exemplo de comando tshark capture é o seguinte (digamos que você queira monitorar a interface eth0):

sudo tshark -i eth0

Também podemos adicionar filtros de captura ao comando:

sudo tshark -i eth0 "port 6633"

Este comando irá capturar todo o tráfego de e para a porta 6633 (a porta padrão dos controladores OpenFlow)

Simplesmente capturar o tráfego não é suficiente. Para analisar a captura através de um programa, precisamos primeiro converter a captura em um formato facilmente compreensível. Insira o XML.

sudo tshark -i eth0 -T pdml > dump.xml  

Isso gera o arquivo de captura como um arquivo xml com todos os pacotes junto com seus vários atributos como tags.

Isso pode ser analisado subseqüentemente usando qualquer analisador xml padrão.

Algumas coisas extras que eu ajustei: eu desmontei a "porta 6633". E acrescentou uma opção -n (endereços não são resolvidos). Os pacotes adicionais que são capturados como resultado podem sempre ser filtrados pelo analisador xml. Como meu aplicativo dava uma pequena importância aos timestamps de vários pacotes, eu não queria causar atrasos adicionais devido à filtragem / resolução. Note que eu posso estar terrivelmente errado no meu raciocínio aqui (foi apenas um palpite). Cada pacote possui um registro de data e hora adicionado pelo adaptador de rede quando o dispositivo recebe o mesmo. Portanto, é mais do que provável que o uso de tais truques não afetaria o registro de tempo.

Meu comando final foi, portanto:

sudo tshark -n -i eth0 -T pdml > dump.xml

NOTA ADICIONAL: Se você está habituado a usar o WireShark para depurar pacotes OpenFlow, você provavelmente usa o filtro de exibição: "de". No entanto, este não é um filtro de captura válido que é exigido pelo tshark (os filtros de captura são semelhantes aos usados no tcpdump)

PS: Envie-me uma linha se precisar do analisador xml (usei python)

    
por 27.06.2013 / 19:46
1

Tente revisar a saída de:

sudo tshark -O openflow_v4 -i eth0 port <openflow port>

Você pode revisar os protocolos disponíveis com este comando:

~] tshark -G protocols | grep openflow
OpenFlow        openflow        openflow
OpenFlow 1.0    openflow_v1     openflow_v1
OpenFlow 1.3    openflow_v4     openflow_v4
OpenFlow 1.4    openflow_v5     openflow_v5
    
por 30.07.2015 / 12:42