tumi8 / vermont

Vermont (VERsatile MONitoring Toolkit) is an open-source software toolkit for the creation and processing of network flow data.
https://www.net.in.tum.de/research/software/#vermont
GNU General Public License v2.0
58 stars 22 forks source link

Add ZMQ IpfixReceiver subclass #50

Closed bluca closed 8 years ago

bluca commented 8 years ago

Add support to receive Ipfix/Netflow payloads over a ZMQ connection. The support is optional and disabled by default. If enabled, adds a build dependency on libczmq. CZMQ is a high-level API that builds on libzmq, and exposes easy and nice to use APIs to communicate using the ZeroMQ protocol. For more information about ZeroMQ, please see: http://zeromq.org/ https://github.com/zeromq/czmq

bluca commented 8 years ago

A bit more background on this:

The ZeroMQ project provides a set of libraries to use ZMTP, a protocol for setting up communication channels over TCP, UDP, IPC or shared memory, all using the same API. A variety of patterns and socket "types" are made available.

One of those patterns is the publisher-subscriber. This is what I implemented here. The ZMQ Ipfix Receiver can subscribe to one or more channels made available by one or more publishers. This pattern is good because it's resilient, offers low latency and high throughput, and doesn't require an handshake.

This makes it ideal for software dataplanes that generate reports and want to send them away quickly.

bluca commented 8 years ago

@ogasser - ping :-)

bluca commented 8 years ago

Thanks!

I'll make sure to follow the recommendations about code style for the next PRs.