2. cflowdmux
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
by cflowdmux
. Figure 2 is a diagram of the
basic functions of cflowdmux
.
As UDP flow-export packets arrive, cflowdmux
writes them into
one of the shared memory packet buffers. Before writing into a share
memory buffer, cflowdmux
gets the semaphore for the buffer to
prevent writing a buffer that's being read by a client like
cflowd
. When 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.
Currently cflowdmux
is a standalone program, and can be run
alone without clients. There's no particularly good reason to do
so, since cflowdmux
does not analyze the contents of the data.
However, it does mean that it's fairly safe to start cflowdmux
at boot time even if you will not be running clients all of the time.
Next Previous Contents