cflowdmux accepts Cisco flow-export packets arriving
on UDP sockets and saves the packets in shared memory buffers.
cflowdmux toggles between two packet buffers when writing
packets, and clients may read the buffer that is not currently being
written. A semaphore is used as the read/write mutex for each buffer,
so that clients can avoid reading a buffer while it's being written
cflowdmux. Figure 2 is a diagram of the
basic functions of
As UDP flow-export packets arrive,
cflowdmux writes them into
one of the shared memory packet buffers. Before writing into a share
cflowdmux gets the semaphore for the buffer to
prevent writing a buffer that's being read by a client like
cflowdmux reaches the end of the buffer
or 2 seconds transpires without coming to the end of the buffer, it
releases the semaphore for the buffer and toggles to the other buffer.
The motivation for the use of shared memory for inter-process communication: performance. A bottleneck at this interface in the system is important to avoid because it will affect all downstream processing.
cflowdmux is a standalone program, and can be run
alone without clients. There's no particularly good reason to do
cflowdmux does not analyze the contents of the data.
However, it does mean that it's fairly safe to start
at boot time even if you will not be running clients all of the time.