File: README.sqlite3

package info (click to toggle)
pmacct 0.14.0-1.1
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 3,996 kB
  • sloc: ansic: 60,798; sh: 636; makefile: 286
file content (128 lines) | stat: -rw-r--r-- 6,364 bytes parent folder | download
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
To create the database and the table you have to execute the following scripts.
Remember that SQLite - unlike MySQL and PostgreSQL - does not endorse concepts
of authentication (username and password couple) and permissions which are
embedded into the filesystem instead. The database filename '/tmp/pmacct.db'
is just a trivial example: you are free to build the database wherever fits
better for you on the system (e.g., to follow a partitioning scheme, impose 
specific permissions, etc.). 

- To create v1 tables:
  * sqlite3 /tmp/pmacct.db < pmacct-create-table.sqlite3

- To use v1 tables:
  * data will be available in 'acct' table of 'pmacct' DB.
  * Add 'sql_table_version: 1' line to your configuration.

Similarly, v2 to v7 tables:

- To create v2 tables:
  * sqlite3 /tmp/pmacct.db < pmacct-create-table_v2.sqlite3

- To use v2 tables:
  * data will be available in 'acct_v2' table of 'pmacct' DB.
  * Add 'sql_table_version: 2' line to your configuration.

[ ... ]

- To create v7 tables:
  * sqlite3 /tmp/pmacct.db < pmacct-create-table_v7.sqlite3

- To use v7 tables:
  * data will be available in 'acct_v7' table of 'pmacct' DB.
  * Add 'sql_table_version: 7' line to your configuration.

Similarly, BGP tables:

- To create BGP v1 tables:
  * sqlite3 /tmp/pmacct.db < pmacct-create-table_bgp_v1.sqlite3

- To use BGP v1 tables:
  * data will be available in 'acct_bgp' table of 'pmacct' DB.
  * Add 'sql_table_version: 1' line to your configuration.
  * Add 'sql_table_type: bgp' line to your configuration.

- To understand difference between the various table versions:
  * Do you need any of the BGP primitives ? Then look the next section.
  * Do you need TCP flags ? Then you have to use v7.
  * Do you need both IP addresses and AS numbers in the same table ? Then you have to use v6.
  * Do you need packet classification ? Then you have to use v5.
  * Do you need flows (other than packets) accounting ? Then you have to use v4.
  * Do you need ToS/DSCP field (QoS) accounting ? Then you have to use v3.
  * Do you need agent ID for distributed accounting and packet tagging ? Then you have to use v2. 
  * Do you need VLAN traffic accounting ? Then you have to use v2.
  * If all of the above points sound useless, then use v1.

- To understand difference between the various BGP table versions:
  * Only BGP table v1 is currently available.

- Aggregation primitives to SQL schema mapping:
  Aggregation primitive => SQL table field
  * tag => agent_id (INT(8) NOT NULL DEFAULT 0)
  * tag2 => agent_id2 (INT(8) NOT NULL DEFAULT 0, see README.agent_id2)
  * src_as => as_src (INT(8) NOT NULL DEFAULT 0)
  * dst_as => as_dst (INT(8) NOT NULL DEFAULT 0)
  * peer_src_as => peer_as_src (INT(8) NOT NULL DEFAULT 0)
  * peer_dst_as => peer_as_dst (INT(8) NOT NULL DEFAULT 0)
  * peer_src_ip => peer_ip_src (CHAR(15) NOT NULL DEFAULT '0.0.0.0', see README.IPv6)
    - peer_src_ip => peer_ip_src (INT(8) DEFAULT 0, if sql_num_hosts: true)
  * peer_dst_ip => peer_ip_dst (CHAR(15) NOT NULL DEFAULT '0.0.0.0', see README.IPv6)
    - peer_dst_ip => peer_ip_dst (INT(8) DEFAULT 0, if sql_num_hosts: true)
  * mpls_vpn_rd => mpls_vpn_rd (CHAR(18) NOT NULL DEFAULT ' ')
  * std_comm => comms (CHAR(24) NOT NULL DEFAULT ' ')
  * ext_comm => comms (CHAR(24) NOT NULL DEFAULT ' ')
  * as_path => as_path (CHAR(21) NOT NULL DEFAULT ' ')
  * local_pref => local_pref (INT(8) NOT NULL DEFAULT 0)
  * med => med (INT(8) NOT NULL DEFAULT 0)
  * src_std_comm => comms_src (CHAR(24) NOT NULL DEFAULT ' ')
  * src_ext_comm => comms_src (CHAR(24) NOT NULL DEFAULT ' ')
  * src_as_path => as_path_src (CHAR(21) NOT NULL DEFAULT ' ')
  * src_local_pref => local_pref_src (INT(8) NOT NULL DEFAULT 0)
  * src_med => med_src (INT(8) NOT NULL DEFAULT 0)
  * in_iface => iface_in (INT(8) NOT NULL DEFAULT 0, see README.iface)
  * out_iface => iface_out (INT(8) NOT NULL DEFAULT 0, see README.iface)
  * src_mask => mask_src (INT(2) NOT NULL DEFAULT 0, see README.mask)
  * dst_mask => mask_dst (INT(2) NOT NULL DEFAULT 0, see README.mask)
  * cos => cos (INT(2) NOT NULL DEFAULT 0, see README.cos)
  * etype => etype (INT(2) NOT NULL DEFAULT 0, see README.etype)
  * class => class_id (CHAR(16) NOT NOT NULL DEFAULT ' ')
  * src_mac => mac_src (CHAR(17) NOT NULL DEFAULT '0:0:0:0:0:0')
  * dst_mac => mac_dst (CHAR(17) NOT NULL DEFAULT '0:0:0:0:0:0')
  * vlan => vlan (INT(4) NOT NULL DEFAULT 0)
  * src_as => as_src (INT(8) NOT NULL DEFAULT 0)
  * dst_as => as_dst (INT(8) NOT NULL DEFAULT 0)
  * src_host => ip_src (CHAR(15) NOT NULL DEFAULT '0.0.0.0', see README.IPv6)
    - src_host => ip_src (INT(8) DEFAULT 0, if sql_num_hosts: true)
  * dst_host => ip_dst (CHAR(15) NOT NULL DEFAULT '0.0.0.0', see README.IPv6)
    - dst_host => ip_dst (INT(8) DEFAULT 0, if sql_num_hosts: true)
  * src_net => ip_src (CHAR(15) NOT NULL DEFAULT '0.0.0.0', see README.IPv6)
    - src_net => ip_src (INT(8) DEFAULT 0, if sql_num_hosts: true)
  * dst_net => ip_dst (CHAR(15) NOT NULL DEFAULT '0.0.0.0', see README.IPv6)
    - dst_net => ip_dst (INT(8) DEFAULT 0, if sql_num_hosts: true)
  * src_port => src_port (INT(4) NOT NULL DEFAULT 0)
    - src_port => port_src (INT(4) NOT NULL DEFAULT 0, if sql_table_version: 8)
  * dst_port => dst_port (INT(4) NOT NULL DEFAULT 0)
    - dst_port => port_dst (INT(4) NOT NULL DEFAULT 0, if sql_table_version: 8)
  * tcpflags => tcp_flags (INT(2) NOT NULL DEFAULT 0)
  * proto => ip_proto (CHAR(6) NOT NULL DEFAULT ' ')
    - proto => ip_proto (INT(2) DEFAULT 0, if sql_num_protos: true)
  * tos => tos (INT(4) NOT NULL DEFAULT 0)

- Counters and time reference need always to be defined as part of the SQL schema:
  * packets (INT(4) UNSIGNED NOT NULL)
  * bytes (INT(8) UNSIGNED NOT NULL)
  * stamp_inserted (DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', enabled by sql_history)
  * stamp_updated (DATETIME, enabled by sql_history)

NOTE: mind to specify EVERYTIME which SQL table version you
intend to adhere to by using either of the following rules:

When using commandline options:
  * -v [ 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 ]

When using configuration directives:
  * sql_table_version: [ 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 ]
  * sql_table_type: [ bgp ]

NOTE: specifying a non-documented SQL table profile will result
in an non-determined behaviour. Unless this will create crashes
to the application, such situations will not be supported.