logstash-codec-netflow 3.1.4 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 64fcf9c71a5f61b3d08657aa9330fe84c509130f
4
- data.tar.gz: 7b3d28e45b1049e3164fc6e1bec4302aef0390c4
3
+ metadata.gz: 2c0a3f206c7fe1f106fda91bd4d6ae4859b431cc
4
+ data.tar.gz: fd0a8240b8b1ea48b5c3c6c200eed186ee9774ee
5
5
  SHA512:
6
- metadata.gz: 721e9b3d27195d9fbcb97101fb710b4830544d9d7300e00e1fa69feca51eb0a45b3416370b94131ff38bd7edb2a751a33ea017e46d3ebe81d57f929d21d9edc1
7
- data.tar.gz: 2596a72bf9fc4a8d738e51ffbdf0da7325207192390e1f21770808bd7e0c487ff333d735b89d559502b2b56c3d024f1ce5a95a24fdcdceaadd0feb50046e9d83
6
+ metadata.gz: 0d593484718168a9b28a07616eb1a13b8cf4e8911caec611113af342f4b926d184dc935dddc6bf62eab7ec91f14d2957f7ece359000f45247766eb0894ea71a2
7
+ data.tar.gz: 290c29bd48ac4248575a8cdcbfec95e11f6a19c10264b4939bcda4cc02f147982dbf5ec82b9d3d92ae3aa235dfe88e4316707f8dbc4731dd41ad2f2981f27ed7
data/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## 3.2.0
2
+
3
+ - Add Netflow v9/v10 template caching, configurable TTL
4
+ - Add option for including flowset_id for Netflow v10
5
+ - Refactor/simplify Netflow v9/v10 templates processing
6
+ - Add variable length field support
7
+ - Add OctetArray support
8
+ - Add Citrix Netscaler (IPFIX) support
9
+ - Add spec tests and anonymized test data for all of the above
10
+
1
11
  ## 3.1.4
2
12
 
3
13
  - Added support for MPLS labels
data/CONTRIBUTORS CHANGED
@@ -7,6 +7,7 @@ Contributors:
7
7
  * Colin Surprenant (colinsurprenant)
8
8
  * Daniel Nägele (analogbyte)
9
9
  * Evgeniy Sudyr (ejectck)
10
+ * G.J. Moed (gjmoed)
10
11
  * Jordan Sissel (jordansissel)
11
12
  * Jorrit Folmer (jorritfolmer)
12
13
  * Matt Dainty (bodgit)
@@ -2,6 +2,7 @@
2
2
  require "logstash/codecs/base"
3
3
  require "logstash/namespace"
4
4
  require "logstash/timestamp"
5
+ require "logstash/json"
5
6
 
6
7
  # The "netflow" codec is used for decoding Netflow v5/v9/v10 (IPFIX) flows.
7
8
  #
@@ -22,6 +23,7 @@ require "logstash/timestamp"
22
23
  # |OpenBSD pflow | y | n | y | http://man.openbsd.org/OpenBSD-current/man4/pflow.4
23
24
  # |Mikrotik 6.35.4 | y | | n | http://wiki.mikrotik.com/wiki/Manual:IP/Traffic_Flow
24
25
  # |Ubiquiti Edgerouter X | | y | | With MPLS labels
26
+ # |Citrix Netscaler | | | y | Still some unknown fields, labeled netscalerUnknown<id>
25
27
  # |===========================================================================================
26
28
  #
27
29
  # ==== Usage
@@ -63,12 +65,23 @@ require "logstash/timestamp"
63
65
  class LogStash::Codecs::Netflow < LogStash::Codecs::Base
64
66
  config_name "netflow"
65
67
 
66
- # Netflow v9 template cache TTL (minutes)
68
+ # Netflow v9/v10 template cache TTL (minutes)
67
69
  config :cache_ttl, :validate => :number, :default => 4000
68
70
 
71
+ # Where to save the template cache
72
+ # This helps speed up processing when restarting logstash
73
+ # (So you don't have to await the arrival of templates)
74
+ # cache will save as path/netflow_templates.cache and/or path/ipfix_templates.cache
75
+ config :cache_save_path, :validate => :path
76
+
69
77
  # Specify into what field you want the Netflow data.
70
78
  config :target, :validate => :string, :default => "netflow"
71
79
 
80
+ # Only makes sense for ipfix, v9 already includes this
81
+ # Setting to true will include the flowset_id in events
82
+ # Allows you to work with sequences, for instance with the aggregate filter
83
+ config :include_flowset_id, :validate => :boolean, :default => false
84
+
72
85
  # Specify which Netflow versions you will accept.
73
86
  config :versions, :validate => :array, :default => [5, 9, 10]
74
87
 
@@ -137,6 +150,26 @@ class LogStash::Codecs::Netflow < LogStash::Codecs::Base
137
150
  # Path to default IPFIX field definitions
138
151
  filename = ::File.expand_path('netflow/ipfix.yaml', ::File.dirname(__FILE__))
139
152
  @ipfix_fields = load_definitions(filename, @ipfix_definitions)
153
+
154
+ if @cache_save_path
155
+ if @versions.include?(9)
156
+ if File.exists?("#{@cache_save_path}/netflow_templates.cache")
157
+ @netflow_templates_cache = load_templates_cache("#{@cache_save_path}/netflow_templates.cache")
158
+ @netflow_templates_cache.each{ |key, fields| @netflow_templates[key, @cache_ttl] = BinData::Struct.new(:endian => :big, :fields => fields) }
159
+ else
160
+ @netflow_templates_cache = {}
161
+ end
162
+ end
163
+
164
+ if @versions.include?(10)
165
+ if File.exists?("#{@cache_save_path}/ipfix_templates.cache")
166
+ @ipfix_templates_cache = load_templates_cache("#{@cache_save_path}/ipfix_templates.cache")
167
+ @ipfix_templates_cache.each{ |key, fields| @ipfix_templates[key, @cache_ttl] = BinData::Struct.new(:endian => :big, :fields => fields) }
168
+ else
169
+ @ipfix_templates_cache = {}
170
+ end
171
+ end
172
+ end
140
173
  end # def register
141
174
 
142
175
  def decode(payload, metadata = nil, &block)
@@ -216,40 +249,27 @@ class LogStash::Codecs::Netflow < LogStash::Codecs::Base
216
249
  events = []
217
250
 
218
251
  case record.flowset_id
219
- when 0
252
+ when 0..1
220
253
  # Template flowset
221
254
  record.flowset_data.templates.each do |template|
222
255
  catch (:field) do
223
256
  fields = []
224
- template.record_fields.each do |field|
225
- entry = netflow_field_for(field.field_type, field.field_length)
226
- throw :field unless entry
227
- fields += entry
228
- end
229
- # We get this far, we have a list of fields
230
- #key = "#{flowset.source_id}|#{event["source"]}|#{template.template_id}"
231
- if metadata != nil
232
- key = "#{flowset.source_id}|#{template.template_id}|#{metadata["host"]}|#{metadata["port"]}"
257
+ # Template flowset (0) or Options template flowset (1) ?
258
+ if record.flowset_id == 0
259
+ template.record_fields.each do |field|
260
+ entry = netflow_field_for(field.field_type, field.field_length)
261
+ throw :field unless entry
262
+ fields += entry
263
+ end
233
264
  else
234
- key = "#{flowset.source_id}|#{template.template_id}"
235
- end
236
- @netflow_templates[key, @cache_ttl] = BinData::Struct.new(:endian => :big, :fields => fields)
237
- # Purge any expired templates
238
- @netflow_templates.cleanup!
239
- end
240
- end
241
- when 1
242
- # Options template flowset
243
- record.flowset_data.templates.each do |template|
244
- catch (:field) do
245
- fields = []
246
- template.scope_fields.each do |field|
247
- fields << [uint_field(0, field.field_length), NETFLOW9_SCOPES[field.field_type]]
248
- end
249
- template.option_fields.each do |field|
250
- entry = netflow_field_for(field.field_type, field.field_length)
251
- throw :field unless entry
252
- fields += entry
265
+ template.scope_fields.each do |field|
266
+ fields << [uint_field(0, field.field_length), NETFLOW9_SCOPES[field.field_type]]
267
+ end
268
+ template.option_fields.each do |field|
269
+ entry = netflow_field_for(field.field_type, field.field_length)
270
+ throw :field unless entry
271
+ fields += entry
272
+ end
253
273
  end
254
274
  # We get this far, we have a list of fields
255
275
  #key = "#{flowset.source_id}|#{event["source"]}|#{template.template_id}"
@@ -261,6 +281,10 @@ class LogStash::Codecs::Netflow < LogStash::Codecs::Base
261
281
  @netflow_templates[key, @cache_ttl] = BinData::Struct.new(:endian => :big, :fields => fields)
262
282
  # Purge any expired templates
263
283
  @netflow_templates.cleanup!
284
+ if @cache_save_path
285
+ @netflow_templates_cache[key] = fields
286
+ save_templates_cache(@netflow_templates_cache, "#{@cache_save_path}/netflow_templates.cache")
287
+ end
264
288
  end
265
289
  end
266
290
  when 256..65535
@@ -332,31 +356,17 @@ class LogStash::Codecs::Netflow < LogStash::Codecs::Base
332
356
  events = []
333
357
 
334
358
  case record.flowset_id
335
- when 2
336
- # Template flowset
359
+ when 2..3
337
360
  record.flowset_data.templates.each do |template|
338
361
  catch (:field) do
339
362
  fields = []
340
- template.record_fields.each do |field|
363
+ # Template flowset (2) or Options template flowset (3) ?
364
+ template_fields = (record.flowset_id == 2) ? template.record_fields : (template.scope_fields.to_ary + template.option_fields.to_ary)
365
+ template_fields.each do |field|
341
366
  field_type = field.field_type
342
367
  field_length = field.field_length
343
368
  enterprise_id = field.enterprise ? field.enterprise_id : 0
344
369
 
345
- if field.field_length == 0xffff
346
- # FIXME
347
- @logger.warn("Cowardly refusing to deal with variable length encoded field", :type => field_type, :enterprise => enterprise_id)
348
- throw :field
349
- end
350
-
351
- if enterprise_id == 0
352
- case field_type
353
- when 291, 292, 293
354
- # FIXME
355
- @logger.warn("Cowardly refusing to deal with complex data types", :type => field_type, :enterprise => enterprise_id)
356
- throw :field
357
- end
358
- end
359
-
360
370
  entry = ipfix_field_for(field_type, enterprise_id, field.field_length)
361
371
  throw :field unless entry
362
372
  fields += entry
@@ -366,42 +376,10 @@ class LogStash::Codecs::Netflow < LogStash::Codecs::Base
366
376
  @ipfix_templates[key, @cache_ttl] = BinData::Struct.new(:endian => :big, :fields => fields)
367
377
  # Purge any expired templates
368
378
  @ipfix_templates.cleanup!
369
- end
370
- end
371
- when 3
372
- # Options template flowset
373
- record.flowset_data.templates.each do |template|
374
- catch (:field) do
375
- fields = []
376
- (template.scope_fields.to_ary + template.option_fields.to_ary).each do |field|
377
- field_type = field.field_type
378
- field_length = field.field_length
379
- enterprise_id = field.enterprise ? field.enterprise_id : 0
380
-
381
- if field.field_length == 0xffff
382
- # FIXME
383
- @logger.warn("Cowardly refusing to deal with variable length encoded field", :type => field_type, :enterprise => enterprise_id)
384
- throw :field
385
- end
386
-
387
- if enterprise_id == 0
388
- case field_type
389
- when 291, 292, 293
390
- # FIXME
391
- @logger.warn("Cowardly refusing to deal with complex data types", :type => field_type, :enterprise => enterprise_id)
392
- throw :field
393
- end
394
- end
395
-
396
- entry = ipfix_field_for(field_type, enterprise_id, field.field_length)
397
- throw :field unless entry
398
- fields += entry
379
+ if @cache_save_path
380
+ @ipfix_templates_cache[key] = fields
381
+ save_templates_cache(@ipfix_templates_cache, "#{@cache_save_path}/ipfix_templates.cache")
399
382
  end
400
- # FIXME Source IP address required in key
401
- key = "#{flowset.observation_domain_id}|#{template.template_id}"
402
- @ipfix_templates[key, @cache_ttl] = BinData::Struct.new(:endian => :big, :fields => fields)
403
- # Purge any expired templates
404
- @ipfix_templates.cleanup!
405
383
  end
406
384
  end
407
385
  when 256..65535
@@ -427,6 +405,10 @@ class LogStash::Codecs::Netflow < LogStash::Codecs::Base
427
405
  event[@target][f] = flowset[f].snapshot
428
406
  end
429
407
 
408
+ if @include_flowset_id
409
+ event[@target][FLOWSET_ID] = record.flowset_id.snapshot
410
+ end
411
+
430
412
  r.each_pair do |k, v|
431
413
  case k.to_s
432
414
  when /^flow(?:Start|End)Seconds$/
@@ -478,11 +460,51 @@ class LogStash::Codecs::Netflow < LogStash::Codecs::Base
478
460
  fields
479
461
  end
480
462
 
463
+ def load_templates_cache(file_path)
464
+ templates_cache = {}
465
+ begin
466
+ templates_cache = JSON.parse(File.read(file_path))
467
+ rescue Exception => e
468
+ raise "#{self.class.name}: templates cache file corrupt (#{file_path})"
469
+ end
470
+
471
+ templates_cache
472
+ end
473
+
474
+ def save_templates_cache(templates_cache, file_path)
475
+ begin
476
+ File.open(file_path, 'w') {|file| file.write templates_cache.to_json }
477
+ rescue Exception => e
478
+ raise "#{self.class.name}: saving templates cache file failed (#{file_path}) with error #{e}"
479
+ end
480
+ end
481
+
481
482
  def uint_field(length, default)
482
483
  # If length is 4, return :uint32, etc. and use default if length is 0
483
484
  ("uint" + (((length > 0) ? length : default) * 8).to_s).to_sym
484
485
  end # def uint_field
485
486
 
487
+ def skip_field(field, type, length)
488
+ if length == 65535
489
+ field[0] = :VarSkip
490
+ else
491
+ field += [nil, {:length => length.to_i}]
492
+ end
493
+
494
+ field
495
+ end # def skip_field
496
+
497
+ def string_field(field, type, length)
498
+ if length == 65535
499
+ field[0] = :VarString
500
+ else
501
+ field[0] = :string
502
+ field += [{ :length => length.to_i, :trim_padding => true }]
503
+ end
504
+
505
+ field
506
+ end # def string_field
507
+
486
508
  def netflow_field_for(type, length)
487
509
  if @netflow_fields.include?(type)
488
510
  field = @netflow_fields[type].clone
@@ -494,9 +516,9 @@ class LogStash::Codecs::Netflow < LogStash::Codecs::Base
494
516
  # is dynamic
495
517
  case field[0]
496
518
  when :skip
497
- field += [nil, {:length => length}]
519
+ field += [nil, {:length => length.to_i}]
498
520
  when :string
499
- field += [{:length => length, :trim_padding => true}]
521
+ field += [{:length => length.to_i, :trim_padding => true}]
500
522
  end
501
523
 
502
524
  @logger.debug? and @logger.debug("Definition complete", :field => field)
@@ -528,9 +550,12 @@ class LogStash::Codecs::Netflow < LogStash::Codecs::Base
528
550
  if field.is_a?(Array)
529
551
  case field[0]
530
552
  when :skip
531
- field += [nil, {:length => length}]
553
+ field = skip_field(field, type, length.to_i)
532
554
  when :string
533
- field += [{:length => length, :trim_padding => true}]
555
+ field = string_field(field, type, length.to_i)
556
+ when :octetarray
557
+ field[0] = :OctetArray
558
+ field += [{:initial_length => length.to_i}]
534
559
  when :uint64
535
560
  field[0] = uint_field(length, 8)
536
561
  when :uint32
@@ -1202,6 +1202,670 @@
1202
1202
  433:
1203
1203
  - :uint64
1204
1204
  - :ignoredLayer2FrameTotalCount
1205
+ 5951:
1206
+ 128:
1207
+ - :uint32
1208
+ - :netscalerRoundTripTime
1209
+ 129:
1210
+ - :uint32
1211
+ - :netscalerTransactionId
1212
+ 130:
1213
+ - :string
1214
+ - :netscalerHttpReqUrl
1215
+ 131:
1216
+ - :string
1217
+ - :netscalerHttpReqCookie
1218
+ 132:
1219
+ - :uint64
1220
+ - :netscalerFlowFlags
1221
+ 133:
1222
+ - :uint32
1223
+ - :netscalerConnectionId
1224
+ 134:
1225
+ - :uint8
1226
+ - :netscalerSyslogPriority
1227
+ 135:
1228
+ - :string
1229
+ - :netscalerSyslogMessage
1230
+ 136:
1231
+ - :uint64
1232
+ - :netscalerSyslogTimestamp
1233
+ 140:
1234
+ - :string
1235
+ - :netscalerHttpReqReferer
1236
+ 141:
1237
+ - :string
1238
+ - :netscalerHttpReqMethod
1239
+ 142:
1240
+ - :string
1241
+ - :netscalerHttpReqHost
1242
+ 143:
1243
+ - :string
1244
+ - :netscalerHttpReqUserAgent
1245
+ 144:
1246
+ - :uint16
1247
+ - :netscalerHttpRspStatus
1248
+ 145:
1249
+ - :uint64
1250
+ - :netscalerHttpRspLen
1251
+ 146:
1252
+ - :uint64
1253
+ - :netscalerServerTTFB
1254
+ 147:
1255
+ - :uint64
1256
+ - :netscalerServerTTLB
1257
+ 150:
1258
+ - :uint32
1259
+ - :netscalerAppNameIncarnationNumber
1260
+ 151:
1261
+ - :uint32
1262
+ - :netscalerAppNameAppId
1263
+ 152:
1264
+ - :string
1265
+ - :netscalerAppName
1266
+ 153:
1267
+ - :uint64
1268
+ - :netscalerHttpReqRcvFB
1269
+ 156:
1270
+ - :uint64
1271
+ - :netscalerHttpReqForwFB
1272
+ 157:
1273
+ - :uint64
1274
+ - :netscalerHttpResRcvFB
1275
+ 158:
1276
+ - :uint64
1277
+ - :netscalerHttpResForwFB
1278
+ 159:
1279
+ - :uint64
1280
+ - :netscalerHttpReqRcvLB
1281
+ 160:
1282
+ - :uint64
1283
+ - :netscalerHttpReqForwLB
1284
+ 161:
1285
+ - :uint32
1286
+ - :netscalerMainPageId
1287
+ 162:
1288
+ - :uint32
1289
+ - :netscalerMainPageCoreId
1290
+ 163:
1291
+ - :string
1292
+ - :netscalerHttpClientInteractionStartTime
1293
+ 164:
1294
+ - :string
1295
+ - :netscalerHttpClientRenderEndTime
1296
+ 165:
1297
+ - :string
1298
+ - :netscalerHttpClientRenderStartTime
1299
+ 167:
1300
+ - :string
1301
+ - :netscalerAppTemplateName
1302
+ 168:
1303
+ - :string
1304
+ - :netscalerHttpClientInteractionEndTime
1305
+ 169:
1306
+ - :uint64
1307
+ - :netscalerHttpResRcvLB
1308
+ 170:
1309
+ - :uint64
1310
+ - :netscalerHttpResForwLB
1311
+ 171:
1312
+ - :uint32
1313
+ - :netscalerAppUnitNameAppId
1314
+ 172:
1315
+ - :uint32
1316
+ - :netscalerDbLoginFlags
1317
+ 173:
1318
+ - :uint8
1319
+ - :netscalerDbReqType
1320
+ 174:
1321
+ - :uint8
1322
+ - :netscalerDbProtocolName
1323
+ 175:
1324
+ - :string
1325
+ - :netscalerDbUserName
1326
+ 176:
1327
+ - :string
1328
+ - :netscalerDbDatabaseName
1329
+ 177:
1330
+ - :string
1331
+ - :netscalerDbCltHostName
1332
+ 178:
1333
+ - :string
1334
+ - :netscalerDbReqString
1335
+ 179:
1336
+ - :string
1337
+ - :netscalerDbRespStatusString
1338
+ 180:
1339
+ - :uint64
1340
+ - :netscalerDbRespStatus
1341
+ 181:
1342
+ - :uint64
1343
+ - :netscalerDbRespLength
1344
+ 182:
1345
+ - :uint32
1346
+ - :netscalerClientRTT
1347
+ 183:
1348
+ - :string
1349
+ - :netscalerHttpContentType
1350
+ 185:
1351
+ - :string
1352
+ - :netscalerHttpReqAuthorization
1353
+ 186:
1354
+ - :string
1355
+ - :netscalerHttpReqVia
1356
+ 187:
1357
+ - :string
1358
+ - :netscalerHttpResLocation
1359
+ 188:
1360
+ - :string
1361
+ - :netscalerHttpResSetCookie
1362
+ 189:
1363
+ - :string
1364
+ - :netscalerHttpResSetCookie2
1365
+ 190:
1366
+ - :string
1367
+ - :netscalerHttpReqXForwardedFor
1368
+ 192:
1369
+ - :octetarray
1370
+ - :netscalerConnectionChainID
1371
+ 193:
1372
+ - :uint8
1373
+ - :netscalerConnectionChainHopCount
1374
+ 200:
1375
+ - :octetarray
1376
+ - :netscalerICASessionGuid
1377
+ 201:
1378
+ - :string
1379
+ - :netscaleIcaClientVersion
1380
+ 202:
1381
+ - :uint16
1382
+ - :netscalerIcaClientType
1383
+ 203:
1384
+ - :ip4_addr
1385
+ - :netscalerIcaClientIP
1386
+ 204:
1387
+ - :string
1388
+ - :netscalerIcaClientHostName
1389
+ 205:
1390
+ - :string
1391
+ - :netscalerAaaUsername
1392
+ 207:
1393
+ - :string
1394
+ - :netscalerIcaDomainName
1395
+ 208:
1396
+ - :uint16
1397
+ - :netscalerIcaClientLauncher
1398
+ 209:
1399
+ - :uint32
1400
+ - :netscalerIcaSessionSetupTime
1401
+ 210:
1402
+ - :string
1403
+ - :netscalerIcaServerName
1404
+ 214:
1405
+ - :uint8
1406
+ - :netscalerIcaSessionReconnects
1407
+ 215:
1408
+ - :uint32
1409
+ - :netscalerIcaRTT
1410
+ 216:
1411
+ - :uint32
1412
+ - :netscalerIcaClientsideRXBytes
1413
+ 217:
1414
+ - :uint32
1415
+ - :netscalerIcaClientsideTXBytes
1416
+ 219:
1417
+ - :uint16
1418
+ - :netscalerIcaClientsidePacketsRetransmit
1419
+ 220:
1420
+ - :uint16
1421
+ - :netscalerIcaServersidePacketsRetransmit
1422
+ 221:
1423
+ - :uint32
1424
+ - :netscalerIcaClientsideRTT
1425
+ 222:
1426
+ - :uint32
1427
+ - :netscalerIcaServersideRTT
1428
+ 223:
1429
+ - :uint32
1430
+ - :netscalerIcaSessionUpdateBeginSec
1431
+ 224:
1432
+ - :uint32
1433
+ - :netscalerIcaSessionUpdateEndSec
1434
+ 225:
1435
+ - :uint32
1436
+ - :netscalerIcaChannelId1
1437
+ 226:
1438
+ - :uint32
1439
+ - :netscalerIcaChannelId1Bytes
1440
+ 227:
1441
+ - :uint32
1442
+ - :netscalerIcaChannelId2
1443
+ 228:
1444
+ - :uint32
1445
+ - :netscalerIcaChannelId2Bytes
1446
+ 229:
1447
+ - :uint32
1448
+ - :netscalerIcaChannelId3
1449
+ 230:
1450
+ - :uint32
1451
+ - :netscalerIcaChannelId3Bytes
1452
+ 231:
1453
+ - :uint32
1454
+ - :netscalerIcaChannelId4
1455
+ 232:
1456
+ - :uint32
1457
+ - :netscalerIcaChannelId4Bytes
1458
+ 233:
1459
+ - :uint32
1460
+ - :netscalerIcaChannelId5
1461
+ 234:
1462
+ - :uint32
1463
+ - :netscalerIcaChannelId5Bytes
1464
+ 235:
1465
+ - :uint16
1466
+ - :netscalerIcaConnectionPriority
1467
+ 236:
1468
+ - :uint32
1469
+ - :netscalerApplicationStartupDuration
1470
+ 237:
1471
+ - :uint16
1472
+ - :netscalerIcaLaunchMechanism
1473
+ 238:
1474
+ - :string
1475
+ - :netscalerIcaApplicationName
1476
+ 239:
1477
+ - :uint32
1478
+ - :netscalerApplicationStartupTime
1479
+ 240:
1480
+ - :uint16
1481
+ - :netscalerIcaApplicationTerminationType
1482
+ 241:
1483
+ - :uint32
1484
+ - :netscalerIcaApplicationTerminationTime
1485
+ 242:
1486
+ - :uint32
1487
+ - :netscalerIcaSessionEndTime
1488
+ 243:
1489
+ - :uint32
1490
+ - :netscalerIcaClientsideJitter
1491
+ 244:
1492
+ - :uint32
1493
+ - :netscalerIcaServersideJitter
1494
+ 245:
1495
+ - :uint32
1496
+ - :netscalerIcaAppProcessID
1497
+ 246:
1498
+ - :string
1499
+ - :netscalerIcaAppModulePath
1500
+ 247:
1501
+ - :uint32
1502
+ - :netscalerIcaDeviceSerialNo
1503
+ 248:
1504
+ - :octetarray
1505
+ - :netscalerMsiClientCookie
1506
+ 249:
1507
+ - :uint64
1508
+ - :netscalerIcaFlags
1509
+ 250:
1510
+ - :string
1511
+ - :netscalerIcaUsername
1512
+ 251:
1513
+ - :uint8
1514
+ - :netscalerLicenseType
1515
+ 252:
1516
+ - :uint64
1517
+ - :netscalerMaxLicenseCount
1518
+ 253:
1519
+ - :uint64
1520
+ - :netscalerCurrentLicenseConsumed
1521
+ 254:
1522
+ - :uint32
1523
+ - :netscalerIcaNetworkUpdateStartTime
1524
+ 255:
1525
+ - :uint32
1526
+ - :netscalerIcaNetworkUpdateEndTime
1527
+ 256:
1528
+ - :uint32
1529
+ - :netscalerIcaClientsideSRTT
1530
+ 257:
1531
+ - :uint32
1532
+ - :netscalerIcaServersideSRTT
1533
+ 258:
1534
+ - :uint32
1535
+ - :netscalerIcaClientsideDelay
1536
+ 259:
1537
+ - :uint32
1538
+ - :netscalerIcaServersideDelay
1539
+ 260:
1540
+ - :uint32
1541
+ - :netscalerIcaHostDelay
1542
+ 261:
1543
+ - :uint16
1544
+ - :netscalerIcaClientSideWindowSize
1545
+ 262:
1546
+ - :uint16
1547
+ - :netscalerIcaServerSideWindowSize
1548
+ 263:
1549
+ - :uint16
1550
+ - :netscalerIcaClientSideRTOCount
1551
+ 264:
1552
+ - :uint16
1553
+ - :netscalerIcaServerSideRTOCount
1554
+ 265:
1555
+ - :uint32
1556
+ - :netscalerIcaL7ClientLatency
1557
+ 266:
1558
+ - :uint32
1559
+ - :netscalerIcaL7ServerLatency
1560
+ 267:
1561
+ - :string
1562
+ - :netscalerHttpDomainName
1563
+ 268:
1564
+ - :uint32
1565
+ - :netscalerCacheRedirClientConnectionCoreID
1566
+ 269:
1567
+ - :uint32
1568
+ - :netscalerCacheRedirClientConnectionTransactionID
1569
+ 270:
1570
+ - :uint32
1571
+ - :netscalerUnknown270
1572
+ 271:
1573
+ - :uint32
1574
+ - :netscalerUnknown271
1575
+ 272:
1576
+ - :uint32
1577
+ - :netscalerUnknown272
1578
+ 273:
1579
+ - :uint32
1580
+ - :netscalerUnknown273
1581
+ 274:
1582
+ - :uint32
1583
+ - :netscalerUnknown274
1584
+ 275:
1585
+ - :uint32
1586
+ - :netscalerUnknown275
1587
+ 276:
1588
+ - :uint32
1589
+ - :netscalerUnknown276
1590
+ 277:
1591
+ - :uint32
1592
+ - :netscalerUnknown277
1593
+ 278:
1594
+ - :uint32
1595
+ - :netscalerUnknown278
1596
+ 279:
1597
+ - :uint32
1598
+ - :netscalerUnknown279
1599
+ 280:
1600
+ - :uint32
1601
+ - :netscalerUnknown280
1602
+ 281:
1603
+ - :uint32
1604
+ - :netscalerUnknown281
1605
+ 282:
1606
+ - :uint32
1607
+ - :netscalerUnknown282
1608
+ 283:
1609
+ - :uint32
1610
+ - :netscalerUnknown283
1611
+ 284:
1612
+ - :uint32
1613
+ - :netscalerUnknown284
1614
+ 285:
1615
+ - :uint32
1616
+ - :netscalerUnknown285
1617
+ 286:
1618
+ - :uint32
1619
+ - :netscalerUnknown286
1620
+ 287:
1621
+ - :uint32
1622
+ - :netscalerUnknown287
1623
+ 288:
1624
+ - :uint32
1625
+ - :netscalerUnknown288
1626
+ 289:
1627
+ - :uint32
1628
+ - :netscalerUnknown289
1629
+ 290:
1630
+ - :uint32
1631
+ - :netscalerUnknown290
1632
+ 291:
1633
+ - :uint32
1634
+ - :netscalerUnknown291
1635
+ 292:
1636
+ - :uint32
1637
+ - :netscalerUnknown292
1638
+ 293:
1639
+ - :uint32
1640
+ - :netscalerUnknown293
1641
+ 294:
1642
+ - :uint32
1643
+ - :netscalerUnknown294
1644
+ 295:
1645
+ - :uint32
1646
+ - :netscalerUnknown295
1647
+ 296:
1648
+ - :uint32
1649
+ - :netscalerUnknown296
1650
+ 297:
1651
+ - :uint32
1652
+ - :netscalerUnknown297
1653
+ 298:
1654
+ - :uint32
1655
+ - :netscalerUnknown298
1656
+ 299:
1657
+ - :uint32
1658
+ - :netscalerUnknown299
1659
+ 300:
1660
+ - :uint32
1661
+ - :netscalerUnknown300
1662
+ 301:
1663
+ - :uint32
1664
+ - :netscalerUnknown301
1665
+ 302:
1666
+ - :uint32
1667
+ - :netscalerUnknown302
1668
+ 303:
1669
+ - :uint32
1670
+ - :netscalerUnknown303
1671
+ 304:
1672
+ - :uint32
1673
+ - :netscalerUnknown304
1674
+ 305:
1675
+ - :uint32
1676
+ - :netscalerUnknown305
1677
+ 306:
1678
+ - :uint32
1679
+ - :netscalerUnknown306
1680
+ 307:
1681
+ - :uint32
1682
+ - :netscalerUnknown307
1683
+ 308:
1684
+ - :uint32
1685
+ - :netscalerUnknown308
1686
+ 309:
1687
+ - :uint32
1688
+ - :netscalerUnknown309
1689
+ 310:
1690
+ - :uint32
1691
+ - :netscalerUnknown310
1692
+ 311:
1693
+ - :uint32
1694
+ - :netscalerUnknown311
1695
+ 312:
1696
+ - :uint32
1697
+ - :netscalerUnknown312
1698
+ 313:
1699
+ - :uint32
1700
+ - :netscalerUnknown313
1701
+ 314:
1702
+ - :uint32
1703
+ - :netscalerUnknown314
1704
+ 315:
1705
+ - :uint32
1706
+ - :netscalerUnknown315
1707
+ 316:
1708
+ - :string
1709
+ - :netscalerUnknown316
1710
+ 317:
1711
+ - :uint32
1712
+ - :netscalerUnknown317
1713
+ 318:
1714
+ - :uint32
1715
+ - :netscalerUnknown318
1716
+ 319:
1717
+ - :string
1718
+ - :netscalerUnknown319
1719
+ 320:
1720
+ - :uint16
1721
+ - :netscalerUnknown320
1722
+ 321:
1723
+ - :uint32
1724
+ - :netscalerUnknown321
1725
+ 322:
1726
+ - :uint32
1727
+ - :netscalerUnknown322
1728
+ 323:
1729
+ - :uint16
1730
+ - :netscalerUnknown323
1731
+ 324:
1732
+ - :uint16
1733
+ - :netscalerUnknown324
1734
+ 325:
1735
+ - :uint16
1736
+ - :netscalerUnknown325
1737
+ 326:
1738
+ - :uint16
1739
+ - :netscalerUnknown326
1740
+ 327:
1741
+ - :uint32
1742
+ - :netscalerUnknown327
1743
+ 328:
1744
+ - :uint16
1745
+ - :netscalerUnknown328
1746
+ 329:
1747
+ - :uint16
1748
+ - :netscalerUnknown329
1749
+ 330:
1750
+ - :uint16
1751
+ - :netscalerUnknown330
1752
+ 331:
1753
+ - :uint16
1754
+ - :netscalerUnknown331
1755
+ 332:
1756
+ - :uint32
1757
+ - :netscalerUnknown332
1758
+ 333:
1759
+ - :string
1760
+ - :netscalerUnknown333
1761
+ 334:
1762
+ - :string
1763
+ - :netscalerUnknown334
1764
+ 335:
1765
+ - :uint32
1766
+ - :netscalerUnknown335
1767
+ 336:
1768
+ - :uint32
1769
+ - :netscalerUnknown336
1770
+ 337:
1771
+ - :uint32
1772
+ - :netscalerUnknown337
1773
+ 338:
1774
+ - :uint32
1775
+ - :netscalerUnknown338
1776
+ 339:
1777
+ - :uint32
1778
+ - :netscalerUnknown339
1779
+ 340:
1780
+ - :uint32
1781
+ - :netscalerUnknown340
1782
+ 341:
1783
+ - :uint32
1784
+ - :netscalerUnknown341
1785
+ 342:
1786
+ - :uint32
1787
+ - :netscalerUnknown342
1788
+ 343:
1789
+ - :uint32
1790
+ - :netscalerUnknown343
1791
+ 344:
1792
+ - :uint32
1793
+ - :netscalerUnknown344
1794
+ 345:
1795
+ - :uint32
1796
+ - :netscalerUnknown345
1797
+ 346:
1798
+ - :uint32
1799
+ - :netscalerUnknown346
1800
+ 347:
1801
+ - :uint32
1802
+ - :netscalerUnknown347
1803
+ 348:
1804
+ - :uint16
1805
+ - :netscalerUnknown348
1806
+ 349:
1807
+ - :string
1808
+ - :netscalerUnknown349
1809
+ 350:
1810
+ - :string
1811
+ - :netscalerUnknown350
1812
+ 351:
1813
+ - :string
1814
+ - :netscalerUnknown351
1815
+ 352:
1816
+ - :uint16
1817
+ - :netscalerUnknown352
1818
+ 353:
1819
+ - :uint32
1820
+ - :netscalerUnknown353
1821
+ 354:
1822
+ - :uint32
1823
+ - :netscalerUnknown354
1824
+ 355:
1825
+ - :uint32
1826
+ - :netscalerUnknown355
1827
+ 356:
1828
+ - :uint32
1829
+ - :netscalerUnknown356
1830
+ 357:
1831
+ - :uint32
1832
+ - :netscalerUnknown357
1833
+ 363:
1834
+ - :octetarray
1835
+ - :netscalerUnknown363
1836
+ 383:
1837
+ - :octetarray
1838
+ - :netscalerUnknown383
1839
+ 391:
1840
+ - :uint32
1841
+ - :netscalerUnknown391
1842
+ 398:
1843
+ - :uint32
1844
+ - :netscalerUnknown398
1845
+ 404:
1846
+ - :uint32
1847
+ - :netscalerUnknown404
1848
+ 405:
1849
+ - :uint32
1850
+ - :netscalerUnknown405
1851
+ 427:
1852
+ - :uint64
1853
+ - :netscalerUnknown427
1854
+ 429:
1855
+ - :uint8
1856
+ - :netscalerUnknown429
1857
+ 432:
1858
+ - :uint8
1859
+ - :netscalerUnknown432
1860
+ 433:
1861
+ - :uint8
1862
+ - :netscalerUnknown433
1863
+ 453:
1864
+ - :uint64
1865
+ - :netscalerUnknown453
1866
+ 465:
1867
+ - :uint32
1868
+ - :netscalerUnknown465
1205
1869
  29305:
1206
1870
  1:
1207
1871
  - :uint64