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.


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.