Como obter o ipfix trabalhando com o openvswitch? [fechadas]

7

Estou tentando monitorar meu OpenVswitch via IPFix . Mas estou batendo minha cabeça contra uma parede de tijolos há dois dias: /

De acordo com a página de manual do ovs-vsctl , preciso adicionar uma nova entrada no banco de dados de configuração, mais precisamente na tabela "ipfix". Isso funcionou muito bem e parece que eu entendi direito:

# ovs-vsctl list ipfix
_uuid               : 2d54982b-6cc5-4a8c-845c-cc7ef701da01
external_ids        : {}
obs_domain_id       : 123
obs_point_id        : 456
sampling            : 64
targets             : ["<collector-ip>:<port>"]

Em seguida, baixei o libIPFIX e iniciei o exemplo_coletor. Mas nada aparece. Eu não recebo nenhuma informação. Eu o confirmei usando o wireshark ...

Algumas pesquisas do Google trouxeram um e- mail da Mailinglist, que afirma que é preciso

Ações do OpenFlow para fazer com que o IPFIX seja enviado aos coletores

De acordo com este e- mail, existem novas "ações de amostra", mas não encontrei mais informações sobre como adicioná-las.

Meu melhor palpite é que estou perdendo essas ações de amostra do OpenFlow. Alguém pode me fornecer informações sobre como adicioná-los?

/ edit: Estou executando o OpenVswitch versão 1.11.0 no openSUSE 13.1 (x86_64).

Para que o IPFix funcione, tentei o seguinte:

# ovs-vsctl -- set Bridge s1 ipfix=@i -- --id=@i create IPFIX targets=\"10.0.0.1:4739\" obs_domain_id=123 obs_point_id=456 sampling=64
2d54982b-6cc5-4a8c-845c-cc7ef701da01

Para confirmar que fiz o ipfix da lista ovs-vsctl (veja acima)

Um comando semelhante funcionou como esperado para fazer o sFlow funcionar:

# ovs-vsctl -- set Bridge s1 sflow=@sflow -- --id=@sflow create sflow agent=eth0  target=\"10.0.0.1:6343\" header=128 sampling=32 polling=2
0df2b92b-8a83-4a63-acc4-fecf6f8f492f

Logo após entrar nessa linha, os resultados da amostragem são enviados para o computador de destino. Infelizmente sem sorte com o IPFix.

Christoph Haefner
fonte
11
@ChristophHaefner O que seus arquivos de log estão dizendo quando você passa o comando IPFix com falha?
Ryan Foley
11
@ Fizzle: Obrigado um milhão pela dica. Eu estava pesquisando anteriormente por arquivos de log, mas / var / log / openvswitch / estava vazio, então segui em frente. Mas, com o seu esforço, procurei mais sofisticado e encontrei um arquivo de log: /var/log/ovs-vswitchd.log! E está realmente afirmando que ele tenta entregar: "2014-01-22T10: 09: 04Z | 1017630 | coletores | AVISO | o envio ao coletor falhou: Conexão recusada" Deve ter esquecido isso durante a depuração com wireshark: /
Christoph Haefner

Respostas:

5

O palavreado que você está usando para configurar o IPFix está definitivamente certo.

Isto é o que você tem:

ovs-vsctl -- set Bridge s1 ipfix=@i -- --id=@i create IPFIX targets=\"10.0.0.1:4739\" obs_domain_id=123 obs_point_id=456 sampling=64

E praticamente o mesmo exemplo está descrito no arquivo man ovs-vsctl:

IPFIX

Configure bridge br0 to send one IPFIX flow record per packet sample to UDP port 4739 on host 192.168.0.34, with Observation Domain ID 123 and Observation Point ID 456:

ovs−vsctl −− set Bridge br0 ipfix=@i −− −−id=@i create IPFIX targets=\"192.168.0.34:4739\" obs_domain_id=123 obs_point_id=456

Com base no seu arquivo de log na seção de comentários:

2014-01-22T10:09:04Z|1017630|collectors|WARN|sending to collector failed: Connection refused

Eu acho que seria razoável supor que o coletor ( 10.0.0.1) está configurado incorretamente ou algo está impedindo conexões de entrada para ele.

Ryan Foley
fonte
Você está 100% certo com sua suposição. Eu nunca pensei nisso porque estou usando o exemplo_coletor da libipfix (que deveria ser a implementação de referência).
Christoph Haefner
Eu rapidamente escrevi um pequeno programa ouvindo na porta 4739 e apenas despejando o que ele recebe na tela. Depuração de que, com Wireshark novamente traz uma coisa importante up: o exportador não enviar um modelo: / também pode ser a razão pela qual o coletor exemplo recusa o que ele recebe ...
Christoph Haefner
O que você está usando para coleta / análise de fluxo?
Ryan Foley
3
Obrigado pela sua sugestão, vou dar uma olhada. Eu encontrei o erro agora: o exemplo_coletor da libipfix está ouvindo no tcp: 4739, enquanto o OpenVswitch o estava enviando no udp: 4739. Não o vi no wireshark, porque estava adicionando um filtro "tcp.port == 4739" ... Estava faltando o modelo porque ele foi enviado uma vez no início e parei o wireshark várias vezes e reiniciei a verificação sem salvar.
Christoph Haefner 22/01
11
@ChristophHaefner, obrigado por uma boa pergunta. Por favor, considere perguntar novamente se for necessário #
Mike Pennington