netfilter: nf_conntrack_tstamp: add flow-based timestamp extension
authorPablo Neira Ayuso <pablo@netfilter.org>
Wed, 19 Jan 2011 15:00:07 +0000 (16:00 +0100)
committerPatrick McHardy <kaber@trash.net>
Wed, 19 Jan 2011 15:00:07 +0000 (16:00 +0100)
commita992ca2a0498edd22a88ac8c41570f536de29c9e
tree4574d4da3f44c7dd3879cb4f209a8bd3a37c0ca9
parent93557f53e1fbd9e2b6574ab0a9b5852628fde9e3
netfilter: nf_conntrack_tstamp: add flow-based timestamp extension

This patch adds flow-based timestamping for conntracks. This
conntrack extension is disabled by default. Basically, we use
two 64-bits variables to store the creation timestamp once the
conntrack has been confirmed and the other to store the deletion
time. This extension is disabled by default, to enable it, you
have to:

echo 1 > /proc/sys/net/netfilter/nf_conntrack_timestamp

This patch allows to save memory for user-space flow-based
loogers such as ulogd2. In short, ulogd2 does not need to
keep a hashtable with the conntrack in user-space to know
when they were created and destroyed, instead we use the
kernel timestamp. If we want to have a sane IPFIX implementation
in user-space, this nanosecs resolution timestamps are also
useful. Other custom user-space applications can benefit from
this via libnetfilter_conntrack.

This patch modifies the /proc output to display the delta time
in seconds since the flow start. You can also obtain the
flow-start date by means of the conntrack-tools.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Patrick McHardy <kaber@trash.net>
include/linux/netfilter/nfnetlink_conntrack.h
include/net/netfilter/nf_conntrack_extend.h
include/net/netfilter/nf_conntrack_timestamp.h [new file with mode: 0644]
include/net/netns/conntrack.h
net/netfilter/Kconfig
net/netfilter/Makefile
net/netfilter/nf_conntrack_core.c
net/netfilter/nf_conntrack_netlink.c
net/netfilter/nf_conntrack_standalone.c
net/netfilter/nf_conntrack_timestamp.c [new file with mode: 0644]