Wie kann ich ipfix mit openvswitch zum Laufen bringen? [geschlossen]

7

Ich versuche, meinen OpenVswitch über IPFix zu überwachen . Aber ich schlage jetzt seit zwei Tagen meinen Kopf gegen eine Mauer: /

Laut der Manpage ovs-vsctl muss ich einen neuen Eintrag in die Konfigurationsdatenbank einfügen, genauer gesagt in die "ipfix" -Tabelle. Das hat ziemlich gut funktioniert und es sieht so aus, als hätte ich es richtig verstanden:

# 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>"]

Ich habe dann libIPFIX heruntergeladen und den example_collector gestartet. Aber es zeigt sich nichts. Ich erhalte keine Informationen. Ich habe es mit Wireshark bestätigt ...

Einige Google-Forscher haben eine E-Mail aus der Mailingliste aufgerufen, in der angegeben ist, dass eine benötigt wird

OpenFlow-Aktionen, die bewirken, dass IPFIX an die Kollektoren gesendet wird

Laut dieser E-Mail gibt es neue "Beispielaktionen", aber ich konnte keine weiteren Informationen zum Hinzufügen finden.

Ich vermute, dass mir diese OpenFlow-Beispielaktionen fehlen. Kann mir jemand Informationen geben, wie ich diese hinzufügen kann?

/ edit: Ich verwende OpenVswitch Version 1.11.0 unter openSUSE 13.1 (x86_64).

Damit IPFix funktioniert, habe ich Folgendes versucht:

# 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

Um zu bestätigen, dass ich die ovs-vsctl-Liste ipfix erstellt habe (siehe oben)

Ein ähnlicher Befehl funktionierte wie erwartet, damit sFlow funktioniert:

# 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

Unmittelbar nach Eingabe dieser Zeile wurden Stichprobenergebnisse an meinen Zielcomputer gesendet. Leider kein Glück mit IPFix.

Christoph Haefner
quelle
1
@ChristophHaefner Was sagen Ihre Protokolldateien, wenn Sie den fehlgeschlagenen IPFix-Befehl übergeben?
Ryan Foley
1
@ Fizzle: Vielen Dank für den Hinweis. Ich habe vorher nach Protokolldateien gesucht, aber / var / log / openvswitch / war leer, also bin ich weitergegangen. Aber mit Ihrem Push habe ich anspruchsvoller gesucht und eine Protokolldatei gefunden: /var/log/ovs-vswitchd.log! Und es heißt tatsächlich, dass er versucht zu liefern: "2014-01-22T10: 09: 04Z | 1017630 | Collectors | WARN | Senden an Collector fehlgeschlagen: Verbindung abgelehnt" Muss beim Debuggen mit Wireshark übersehen worden sein: /
Christoph Haefner

Antworten:

5

Das Wort, mit dem Sie IPFix einrichten, ist definitiv richtig.

Das haben Sie:

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

Und so ziemlich das gleiche Beispiel ist in der man-Datei ovs-vsctl beschrieben:

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

Basierend auf Ihrer Protokolldatei im Kommentarbereich:

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

Ich denke, es wäre vernünftig anzunehmen, dass der Collector ( 10.0.0.1) falsch konfiguriert ist oder etwas verhindert, dass Verbindungen zu ihm eingehen.

Ryan Foley
quelle
Sie haben zu 100% Recht mit Ihrer Annahme. Ich habe nie darüber nachgedacht, weil ich den example_collector von libipfix verwende (der die Referenzimplementierung sein soll).
Christoph Haefner
Ich schrieb schnell ein kleines Programm, das den 4739-Port abhörte und nur das ablegte, was er auf dem Bildschirm bekam. Das erneute Debuggen mit Wireshark bringt eine wichtige Sache auf den Punkt: Der Exporteur sendet keine Vorlage: / Könnte auch der Grund sein, warum der Beispielsammler ablehnt, was er bekommt ...
Christoph Haefner
Was verwenden Sie zum Sammeln / Analysieren von Flüssen?
Ryan Foley
3
Vielen Dank für Ihren Vorschlag, ich werde mich darum kümmern. Ich habe den Fehler inzwischen gefunden: Der example_collector von libipfix hört tcp: 4739 ab, während OpenVswitch ihn auf udp: 4739 sendete. Ich habe es in Wireshark nicht gesehen, weil ich einen Filter "tcp.port == 4739" hinzugefügt habe ... Mir fehlte die Vorlage, weil sie ganz am Anfang einmal gesendet wurde, und ich habe Wireshark mehrmals gestoppt und den Scan neu gestartet ohne zu sichern.
Christoph Haefner
1
@ChristophHaefner, danke für eine gute Frage. Bitte überlegen Sie noch einmal zu fragen, ob die Notwendigkeit entsteht
Mike Pennington