Internet Protocol Flow Information Export
# Internet Protocol Flow Information Export

Das Internet Protocol Flow Information Export (IPFIX) ist eine Weiterentwicklung des Netflow-Protokolls der Firma Cisco Systems. Es wird von der IETF entwickelt, um den Austausch von Netzüberwachungs-Informationen zu standardisieren.

Als ein Flow werden dabei Pakete eines Datenstroms bezeichnet, die gemeinsame Eigenschaften wie etwa „gleiche Quelle, gleiches Ziel und gleiches Protokoll“ aufweisen. Mittels IPFIX kann nun beispielsweise ein Router Informationen über seine Sicht der aktuellen Netzauslastung an eine zentrale Monitoringstation schicken, die auf diese Informationen geeignet reagieren kann.

IPFIX ist ein reines Push-Protokoll, das heißt die sendende Station schickt von sich aus in regelmäßigen Abständen IPFIX Datenpakete.

Die Zusammensetzung von IPFIX Datenpaketen ist dem Sender weitgehend freigestellt, da er in IPFIX vor dem Versand von Flow-Information den Aufbau der Pakete mittels sogenannter Templates bekannt macht. Auch die in Datenpaketen verwendeten Datentypen sind frei erweiterbar.

IPFIX bevorzugt als Transportprotokoll SCTP, die alternative Nutzung von TCP oder UDP ist aber auch vorgesehen.

## Architektur

Die Architektur eines IPFIX Informationsflusses sieht typischerweise so aus:

Ein Metering Process sammelt am Observation Point Datenpakete, filtert sie gegebenenfalls vor und aggregiert Informationen über diese Pakete. Diese Informationen werden dann vom Exporter an den Collector verschickt. Dabei besteht eine Many-to-Many Beziehung zwischen Exporter und Collector, das heißt ein Exporter kann sowohl mehrere Collectors beliefern als auch ein Collector Informationen von mehreren Exportern beziehen.

## Beispiel

Ein einfacher, mittels IPFIX versendeter Datensatz könnte zum Beispiel so aussehen:

| Quelle | Ziel | Pakete |
| - | - | - |
| 192.168.0.201 | 192.168.0.1 | 235 |
| 192.168.0.202 | 192.168.0.1 | 42 |

Die dabei verwendete IPFIX Nachricht könnte beispielsweise wie folgt aufgebaut sein:

| Bits 0..15 | Bits 16..31 |
| - | - |
| Version = 0x000a | Nachrichtenlänge = 72 Byte |
| Exportzeitpunkt = 2005-12-31 23:59:60 ||
| laufende Nummer = 0 ||
| Quellsystem-ID = 12345678 ||
| Set ID = 2 (Template) | Setlänge = 20 Byte |
| Template ID = 256 | Anzahl Felder = 3 |
| Typ = sourceIPv4Address | Feldlänge = 4 Byte |
| Typ = destinationIPv4Address | Feldlänge = 4 Byte |
| Typ = packetDeltaCount | Feldlänge = 8 Byte |
| Set ID = 256 (Data Set nach Template 256) | Setlänge = 28 Byte |
| Satz 1, Feld 1 = 192.168.0.201 ||
| Satz 1, Feld 2 = 192.168.0.1 ||
| Satz 1, Feld 3 = 235 Pakete ||
| Satz 2, Feld 1 = 192.168.0.202 ||
| Satz 2, Feld 2 = 192.168.0.1 ||
| Satz 2, Feld 3 = 42 Pakete ||

Sie enthält nach dem obligatorischen Header zwei IPFIX Sets: Ein Template Set, das den Aufbau des verwendeten Data Sets bekannt macht und ein Data Set, das die eigentlichen Nutzdaten überträgt. Das Template Set wird dabei im Empfänger gepuffert und muss so zukünftig nicht mehr mitübertragen werden.

