logstash-codec-netflow 3.11.1 → 3.11.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -2
- data/lib/logstash/codecs/netflow/util.rb +15 -10
- data/logstash-codec-netflow.gemspec +3 -3
- data/spec/codecs/benchmarks/ACLidASA.rb +36 -0
- data/spec/codecs/benchmarks/IP6Addr.rb +24 -0
- data/spec/codecs/benchmarks/IPAddr.rb +32 -0
- data/spec/codecs/benchmarks/MacAddr.rb +34 -0
- data/spec/codecs/{netflow_bench_cisco_asa.py → benchmarks/netflow_bench_cisco_asa.py} +0 -0
- data/spec/codecs/{netflow_bench_cisco_asr.py → benchmarks/netflow_bench_cisco_asr.py} +0 -0
- metadata +14 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 77f122827b88b2cd3de0a5d33e68bebf2543b123
|
4
|
+
data.tar.gz: dd53ee247135f3c112105cdb44287bfd4cdff02b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 58fb4cd257c95d1dc594908982dc680e85827109c50d30b82a20e898bc21676c0e128d66cd9bd541b65b842eba2080a2110cf41ea042b75e28292c56641e8c49
|
7
|
+
data.tar.gz: 010589f423fc57e4c3600c47ffd1a07fcd3a80382b7b037c4756ef27a24254ccc5fc506a3f8744263455fba6ee7e71fa6af28539fe26bf49fde99e277a41939f
|
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,13 @@
|
|
1
|
+
## 3.11.2
|
2
|
+
|
3
|
+
- Further improved decoding performance of ASA ACL ids
|
4
|
+
- Further improved decoding performance of MAC addresses
|
5
|
+
- Improved decoding performance of IPv4 addresses
|
6
|
+
|
1
7
|
## 3.11.1
|
2
8
|
|
3
|
-
- Improved decoding performance
|
4
|
-
- Improved decoding performance
|
9
|
+
- Improved decoding performance of ASA ACL ids
|
10
|
+
- Improved decoding performance of mac addresses
|
5
11
|
|
6
12
|
## 3.11.0
|
7
13
|
|
@@ -8,17 +8,15 @@ class IP4Addr < BinData::Primitive
|
|
8
8
|
|
9
9
|
def set(val)
|
10
10
|
unless val.nil?
|
11
|
-
|
12
|
-
if ! ip.ipv4?
|
13
|
-
raise ArgumentError, "invalid IPv4 address '#{val}'"
|
14
|
-
end
|
15
|
-
self.storage = ip.to_i
|
11
|
+
self.storage = val.split('.').inject(0) {|total,value| (total << 8 ) + value.to_i}
|
16
12
|
end
|
17
13
|
end
|
18
14
|
|
19
15
|
def get
|
16
|
+
# This is currently the fastest implementation
|
17
|
+
# For benchmarks see spec/codecs/benchmarks/IPaddr.rb
|
20
18
|
unless self.storage.nil?
|
21
|
-
|
19
|
+
[self.storage].pack('N').unpack('C4').join('.')
|
22
20
|
end
|
23
21
|
end
|
24
22
|
end
|
@@ -38,6 +36,9 @@ class IP6Addr < BinData::Primitive
|
|
38
36
|
end
|
39
37
|
|
40
38
|
def get
|
39
|
+
# There faster implementations, however they come with the
|
40
|
+
# loss of compressed IPv6 notation.
|
41
|
+
# For benchmarks see spec/codecs/benchmarks/IP6Addr.rb
|
41
42
|
unless self.storage.nil?
|
42
43
|
IPAddr.new_ntoh((0..7).map { |i|
|
43
44
|
(self.storage >> (112 - 16 * i)) & 0xffff
|
@@ -57,8 +58,10 @@ class MacAddr < BinData::Primitive
|
|
57
58
|
end
|
58
59
|
|
59
60
|
def get
|
60
|
-
|
61
|
-
|
61
|
+
# This is currently the fastest implementation
|
62
|
+
# For benchmarks see spec/codecs/benchmarks/MacAddr.rb
|
63
|
+
b = self.bytes.unpack('H*')[0]
|
64
|
+
b[0..1] + ":" + b[2..3] + ":" + b[4..5] + ":" + b[6..7] + ":" + b[8..9] + ":" + b[10..11]
|
62
65
|
end
|
63
66
|
end
|
64
67
|
|
@@ -102,8 +105,10 @@ class ACLIdASA < BinData::Primitive
|
|
102
105
|
end
|
103
106
|
|
104
107
|
def get
|
105
|
-
|
106
|
-
|
108
|
+
# This is currently the fastest implementation
|
109
|
+
# For benchmarks see spec/codecs/benchmarks/ACLIdASA.rb
|
110
|
+
b = self.bytes.unpack('H*')[0]
|
111
|
+
b[0..7] + "-" + b[8..15] + "-" + b[16..23]
|
107
112
|
end
|
108
113
|
end
|
109
114
|
|
@@ -1,14 +1,14 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
|
3
3
|
s.name = 'logstash-codec-netflow'
|
4
|
-
s.version = '3.11.
|
4
|
+
s.version = '3.11.2'
|
5
5
|
s.licenses = ['Apache License (2.0)']
|
6
|
-
s.summary = "Reads Netflow v5
|
6
|
+
s.summary = "Reads Netflow v5, Netflow v9 and IPFIX data"
|
7
7
|
s.description = "This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program"
|
8
8
|
s.authors = ["Elastic"]
|
9
9
|
s.email = 'info@elastic.co'
|
10
10
|
s.homepage = "http://www.elastic.co/guide/en/logstash/current/index.html"
|
11
|
-
s.require_paths
|
11
|
+
s.require_paths = ["lib"]
|
12
12
|
|
13
13
|
# Files
|
14
14
|
s.files = Dir["lib/**/*","spec/**/*","*.gemspec","*.md","CONTRIBUTORS","Gemfile","LICENSE","NOTICE.TXT", "vendor/jar-dependencies/**/*.jar", "vendor/jar-dependencies/**/*.rb", "VERSION", "docs/**/*"]
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'benchmark'
|
2
|
+
|
3
|
+
Benchmark.bm do |x|
|
4
|
+
x.report {
|
5
|
+
# Implementation pre v3.11.0
|
6
|
+
bytes=[41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41]
|
7
|
+
2000000.times do
|
8
|
+
b = bytes.collect { |byte|
|
9
|
+
unless byte.nil?
|
10
|
+
byte.to_s(16).rjust(2,'0')
|
11
|
+
end
|
12
|
+
}.join
|
13
|
+
b.scan(/......../).collect { |aclid| aclid }.join("-")
|
14
|
+
end }
|
15
|
+
|
16
|
+
x.report {
|
17
|
+
# Implementation as of v3.11.1
|
18
|
+
bytes='AAAAAAAAAAAA'
|
19
|
+
2000000.times do
|
20
|
+
b = bytes.unpack('H*')[0]
|
21
|
+
b.scan(/......../).collect { |aclid| aclid }.join("-")
|
22
|
+
end }
|
23
|
+
|
24
|
+
x.report {
|
25
|
+
# Implementation as of v3.11.2
|
26
|
+
bytes='AAAAAAAAAAAA'
|
27
|
+
2000000.times do
|
28
|
+
b = bytes.unpack('H*')[0]
|
29
|
+
b[0..7] + "-" + b[8..15] + "-" + b[16..23]
|
30
|
+
end }
|
31
|
+
end
|
32
|
+
|
33
|
+
# user system total real
|
34
|
+
# 19.710000 0.000000 19.710000 ( 19.717288)
|
35
|
+
# 7.000000 0.000000 7.000000 ( 7.003011)
|
36
|
+
# 3.500000 0.000000 3.500000 ( 3.501547)
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'benchmark'
|
2
|
+
require 'ipaddr'
|
3
|
+
|
4
|
+
Benchmark.bm do |x|
|
5
|
+
x.report {
|
6
|
+
# Implementation pre v3.11.0
|
7
|
+
ip = 85060308944708794891899627827609206785
|
8
|
+
2000000.times do
|
9
|
+
IPAddr.new_ntoh([ip].pack('N')).to_s
|
10
|
+
end }
|
11
|
+
|
12
|
+
x.report {
|
13
|
+
# Implementation as of v3.11.2
|
14
|
+
ip = 85060308944708794891899627827609206785
|
15
|
+
2000000.times do
|
16
|
+
b = "%032x" % ip
|
17
|
+
b[0..3] + ":" + b[4..7] + ":" + b[8..11] + ":" + b[12..15] + ":" + b[16..19] + ":" + b[20..23] + ":" + b[24..27] + ":" + b[28..31]
|
18
|
+
end }
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
# user system total real
|
23
|
+
# 21.800000 0.000000 21.800000 ( 21.811893)
|
24
|
+
# 11.760000 0.000000 11.760000 ( 11.768260)
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'benchmark'
|
2
|
+
require 'ipaddr'
|
3
|
+
|
4
|
+
Benchmark.bm do |x|
|
5
|
+
x.report {
|
6
|
+
# Implementation pre v3.11.0
|
7
|
+
ip = 3232235521
|
8
|
+
2000000.times do
|
9
|
+
IPAddr.new_ntoh([ip].pack('N')).to_s
|
10
|
+
end }
|
11
|
+
|
12
|
+
x.report {
|
13
|
+
# Implementation as of v3.11.2
|
14
|
+
ip = 3232235521
|
15
|
+
2000000.times do
|
16
|
+
[ip].pack('N').unpack('C4').join('.')
|
17
|
+
end }
|
18
|
+
|
19
|
+
x.report {
|
20
|
+
ip = 3232235521
|
21
|
+
2000000.times do
|
22
|
+
b = "%08x" % ip
|
23
|
+
"%d.%d.%d.%d" % [b[0..1].to_i(16), b[2..3].to_i(16), b[4..5].to_i(16), b[6..7].to_i(16)]
|
24
|
+
end }
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
# user system total real
|
29
|
+
# 21.330000 0.000000 21.330000 ( 21.348559)
|
30
|
+
# 4.410000 0.000000 4.410000 ( 4.411973)
|
31
|
+
# 6.450000 0.000000 6.450000 ( 6.446321)
|
32
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'benchmark'
|
2
|
+
|
3
|
+
Benchmark.bm do |x|
|
4
|
+
x.report {
|
5
|
+
# Implementation pre v3.11.0
|
6
|
+
bytes=[41, 41, 41, 41, 41, 41]
|
7
|
+
2000000.times do
|
8
|
+
bytes.collect { |byte|
|
9
|
+
unless byte.nil?
|
10
|
+
byte.to_s(16).rjust(2,'0')
|
11
|
+
end
|
12
|
+
}.join(":")
|
13
|
+
end }
|
14
|
+
|
15
|
+
x.report {
|
16
|
+
# Implementation as of v3.11.1
|
17
|
+
bytes='AAAAAA'
|
18
|
+
2000000.times do
|
19
|
+
b = bytes.unpack('H*')[0]
|
20
|
+
b.scan(/../).collect { |byte| byte }.join(":")
|
21
|
+
end }
|
22
|
+
|
23
|
+
x.report {
|
24
|
+
bytes='AAAAAA'
|
25
|
+
2000000.times do
|
26
|
+
b = bytes.unpack('H*')[0]
|
27
|
+
b[0..1] + ":" + b[2..3] + ":" + b[4..5] + ":" + b[6..7] + ":" + b[8..9] + ":" + b[10..11]
|
28
|
+
end }
|
29
|
+
end
|
30
|
+
|
31
|
+
# user system total real
|
32
|
+
# 8.400000 0.000000 8.400000 ( 8.408549)
|
33
|
+
# 10.960000 0.000000 10.960000 ( 10.959357)
|
34
|
+
# 5.600000 0.000000 5.600000 ( 5.597817)
|
File without changes
|
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-codec-netflow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.11.
|
4
|
+
version: 3.11.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
@@ -73,6 +73,12 @@ files:
|
|
73
73
|
- lib/logstash/codecs/netflow/netflow.yaml
|
74
74
|
- lib/logstash/codecs/netflow/util.rb
|
75
75
|
- logstash-codec-netflow.gemspec
|
76
|
+
- spec/codecs/benchmarks/ACLidASA.rb
|
77
|
+
- spec/codecs/benchmarks/IP6Addr.rb
|
78
|
+
- spec/codecs/benchmarks/IPAddr.rb
|
79
|
+
- spec/codecs/benchmarks/MacAddr.rb
|
80
|
+
- spec/codecs/benchmarks/netflow_bench_cisco_asa.py
|
81
|
+
- spec/codecs/benchmarks/netflow_bench_cisco_asr.py
|
76
82
|
- spec/codecs/ipfix.dat
|
77
83
|
- spec/codecs/ipfix_test_barracuda_data256.dat
|
78
84
|
- spec/codecs/ipfix_test_barracuda_tpl.dat
|
@@ -146,8 +152,6 @@ files:
|
|
146
152
|
- spec/codecs/netflow9_test_ubnt_edgerouter_tpl.dat
|
147
153
|
- spec/codecs/netflow9_test_unknown_tpl266_292_data.dat
|
148
154
|
- spec/codecs/netflow9_test_valid01.dat
|
149
|
-
- spec/codecs/netflow_bench_cisco_asa.py
|
150
|
-
- spec/codecs/netflow_bench_cisco_asr.py
|
151
155
|
- spec/codecs/netflow_spec.rb
|
152
156
|
- spec/codecs/netflow_stress.py
|
153
157
|
homepage: http://www.elastic.co/guide/en/logstash/current/index.html
|
@@ -175,8 +179,14 @@ rubyforge_project:
|
|
175
179
|
rubygems_version: 2.4.8
|
176
180
|
signing_key:
|
177
181
|
specification_version: 4
|
178
|
-
summary: Reads Netflow v5
|
182
|
+
summary: Reads Netflow v5, Netflow v9 and IPFIX data
|
179
183
|
test_files:
|
184
|
+
- spec/codecs/benchmarks/ACLidASA.rb
|
185
|
+
- spec/codecs/benchmarks/IP6Addr.rb
|
186
|
+
- spec/codecs/benchmarks/IPAddr.rb
|
187
|
+
- spec/codecs/benchmarks/MacAddr.rb
|
188
|
+
- spec/codecs/benchmarks/netflow_bench_cisco_asa.py
|
189
|
+
- spec/codecs/benchmarks/netflow_bench_cisco_asr.py
|
180
190
|
- spec/codecs/ipfix.dat
|
181
191
|
- spec/codecs/ipfix_test_barracuda_data256.dat
|
182
192
|
- spec/codecs/ipfix_test_barracuda_tpl.dat
|
@@ -250,7 +260,5 @@ test_files:
|
|
250
260
|
- spec/codecs/netflow9_test_ubnt_edgerouter_tpl.dat
|
251
261
|
- spec/codecs/netflow9_test_unknown_tpl266_292_data.dat
|
252
262
|
- spec/codecs/netflow9_test_valid01.dat
|
253
|
-
- spec/codecs/netflow_bench_cisco_asa.py
|
254
|
-
- spec/codecs/netflow_bench_cisco_asr.py
|
255
263
|
- spec/codecs/netflow_spec.rb
|
256
264
|
- spec/codecs/netflow_stress.py
|