summaryrefslogtreecommitdiff
path: root/2005/flow-accounting-ols2005/OLS2005/welte/welte-abstract.tex
blob: 27437add082b81e86ec8985f16b763f152b165b3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

%         Registration            Flow based network accounting with Linux    
%  [2]Register/Submit Proposal Harald Marc Welte (laforge@gnumonks.org)       

Many networking scenarios require some form of 
network accounting that goes beyond some       
simple packet and byte counters as available   
from the `ifconfig' output.                    

When people want to do network accouting, the  
past and current Linux kernel didn't provide   
them with any reasonable mechanism for doing   
so.                                            

Network accounting can generally be done in a  
number of different ways. The traditional way  
is to capture all packets by some userspace    
program. Capturing can be done via a number of 
mechanisms such as \ident{PF_PACKET} sockets, \ident{mmap()}ed 
\ident{PF_PACKET}, \ident{ipt_ULOG}, or \ident{ip_queue}. This         
userspace program then analyzes the packets    
and aggregates the result into per-flow data   
structures.                                    

Whatever mechanism used, this scheme has a     
fundamental performance limitation, since all  
packets need to be copied and analyzed by a    
userspace process.                             

The author has implemented a different         
approach, by which the accounting information  
is stored in the in-kernel connection tracking 
table of the \ident{ip_conntrack} stateful firewall    
state machine. On all firewalls, that state    
table has to be kept anyways---the additional  
overhead introduced by accounting is minimal.  

Once a connection is evicted from the state    
table, its accounting relevant data is         
transferred to userspace to a special          
accounting daemon for further processing,      
aggregation and finally storage in the         
accounting log/database.                       



personal git repositories of Harald Welte. Your mileage may vary