Commit Graph

512 Commits

Author SHA1 Message Date
zhengchao
258ece3fa1 从redis读取到无对应table的rule时,写日志。 2022-06-30 14:39:22 +08:00
zhengchao
432337da6d 新创建的clause,在加入哈希表时,使用了compile中的literal_ids指针,导致内存非法读。修复 TSG-9741 TSG-10495 2022-04-29 20:37:01 +08:00
zhengchao
af4cdebe2c 修复bug: IP Plugin和FQDN Plugin更新时, 先释放了哈希表索引的ex data, 后进行匹配引擎重建,导致匹配线程从旧的匹配引擎中访问到已释放的结构体,造成Segmentation fault TSG-10486 2022-04-28 11:32:14 +08:00
zhengchao
d814b4e9eb 修复bug:ex_data释放时,使用错误的hash表删除索引。 This fix is related to TSG-10486 2022-04-27 14:25:15 +08:00
zhengchao
fd88b6a266 EX_data_rt_row2EX_data返回-1时,ip_rule和fqdn_rule内存未释放,导致内存泄漏 TSG-10475。 2022-04-26 16:34:54 +08:00
zhengchao
742512e10f 修复由于笔误将Maat_hierarchy_clause_fetch中的局部变量的定义为静态变量的错误。 多个maat实例同时重建布尔表达式运算器时,该错误会导致线程不安全访问静态变量,但不应导致 TSG-9741 。 2022-04-23 18:17:28 +08:00
zhengchao
a4fcb73f8a 在ex data更新时,操作哈希时笔误,导致断错误。 2022-03-04 13:01:28 +05:00
zhengchao
a184be53de ex data更新可能耗时10秒以上,超过全局垃圾回收时间,导致非法内存访问。因此, 每个表的ex data使用独立的垃圾回收队列,每次更新完毕时强制回收。 2022-03-03 15:39:39 +05:00
zhengchao
7e1f3eb3d6 删除无用的成员。 2022-01-22 11:36:58 +05:00
zhengchao
732a944ff4 EX_data中的hash表使用RCU更新,替代读写锁,提高多线程下的访问性能。 2022-01-21 22:31:13 +05:00
zhengchao
dd86ba5fc1 JSON文件中不包含有效配置时,避免段错误。 TSG-9349 2022-01-13 12:06:09 +05:00
zhengchao
d2db95e528 Maat_rule_get_ex_data读取compile rule的exdata时,对scanner判空,避免无配置时发生段错误。 修复 TSG-9349 2022-01-12 10:43:46 +05:00
zhengchao
65712be21c 未正确统计0号线程的outer_mid和inner_mid计数 2021-10-24 17:23:08 +03:00
zhengchao
ab22b32a25 Use new method to stat rule number of plugin, ip_plugin and fqdn_plugin table. 2021-10-24 15:16:43 +03:00
zhengchao
6e50978258 maat stat输出plugin(含EX data)、fqdn_plugin、IP_plugin中有效规则的数量。调整outer scan_status的计数方式。 2021-10-24 12:04:11 +03:00
zhengchao
aee1da170e 修复expr表无配置时,maat_stat文件输出的stream计数出现负数的bug。 2021-10-24 09:23:56 +03:00
zhengchao
d954c5a011 expr_plus和interval_plus表的district对英文大小写不敏感。 2021-10-20 00:02:43 +03:00
zhengchao
342c3c36b3 将rulescan.h的编码由GBK转为utf8 2021-10-12 11:52:45 +03:00
zhengchao
51b26e3a54 修复expr_plus和expr混合扫描时,expr漏命中的问题。 2021-10-12 09:55:53 +03:00
zhengchao
2eb2a4aca9 修复bug:对于已命中编译配置的mid,扫描expr_plus或interval_plus表,命中表达式/区间,但没命中district时,会错误的返回之前已命中的编译配置。 2021-10-11 19:16:17 +03:00
zhengchao
593bcfb907 修复 TSG-7994 ,避免处理未知district时出现误命中。 2021-10-11 12:00:26 +03:00
liuxueli
c84fb97aae 如果扫描无规则数值类型的table时直接返回,导致未进行非表达式的运算。 2021-08-20 14:44:09 +08:00
zhengchao
d86d220f33 Rebase. 适配支持Prometheus输出的Field Stat2 2021-08-19 22:10:36 +08:00
zhengchao
465ad3ca6a 如果扫描无规则table时直接返回,导致未进行非表达式的运算。 2021-08-19 21:47:38 +08:00
liuxueli
97ea56eb86 TSG-7066: 支持--prefix参数安装,支持查看changelog
TSG-7390: 支持输出扫描状态到prometheus
2021-08-14 16:22:10 +08:00
zhengchao
50934de91d Plugin表更新后,不需要进行Hierarchy的重建。 2021-08-05 13:51:17 +08:00
zhengchao
c4c1ade152 变更table runtime垃圾回收机制的单元测试通过。 2021-08-05 10:08:21 +08:00
zhengchao
c7e9b29309 IP Plugin和FQDN Plugin内部实现垃圾回收,不再由外部调用。 2021-08-05 00:39:32 +08:00
zhengchao
e356d74bc0 重构table runtime工作量较大,准备放弃。 2021-08-05 00:22:00 +08:00
zhengchao
7e3b746eaa 未对FQDN Plugin表的changed_flag进行重置,产生不必要的FQDN Engine重建 2021-08-04 23:18:02 +08:00
zhengchao
96abe1d9f4 Maat_hierarchy_build_region2clause_hash中,不在对group中的region id排序和去重, 可以提高大Group的加载性能。 2021-07-27 15:17:29 +08:00
zhengchao
dc057b2562 减少增量更新时hier重建的写锁临界区,减少扫描线程的所冲突。 修复 TSG-7211 2021-07-27 11:54:24 +08:00
zhengchao
479eb77369 基于Maat_cmd的测试用例增加扫描状态输出。 2021-07-21 15:30:30 +08:00
zhengchao
0037646ef6 因使用MAAT_SET_SCAN_NO_COUNT后,在Group移除region id时会出现误命中,移除对MAAT_SET_SCAN_NO_COUNT的支持。 回调表使用feather中的垃圾回收队列,便于观察队列长度。 2021-07-21 14:48:08 +08:00
zhengchao
72ffbd9809 修复bug:上一版本引入,region更新不能反映到compile命中;
改善Maat_hierarchy_compile_mid_udpate的处理性能。
2021-07-20 20:55:52 +08:00
zhengchao
524edff8be 优化hit_path增加性能 2021-07-19 20:55:13 +08:00
zhengchao
53beb2f221 compile_mid使用ut_arrary替代tailq存储hit_path。 2021-07-19 20:55:13 +08:00
zhengchao
1e2e3a1798 改进Hierarchy的多线程扫描性能: Hierarchy使用rwlock来保证更新线程和扫描线程间的线程安全, 测试发现在不发生读写锁冲突的情况下, 读写锁的固有开销会导致并发扫描速度降低。
reference:
https://stackoverflow.com/questions/11866486/how-many-simultaneous-readers-can-a-pthread-rwlock-have
2021-07-19 20:55:12 +08:00
zhengchao
e21db4ddf7 去掉不必要的memset,避免性损失。 2021-07-19 20:55:12 +08:00
zhengchao
233bc2f0ef Maat_set_scan_status可以设置MAAT_SET_SCAN_NO_COUNT类型参数, 指示下一次扫描不进行计数,以减少hit path的存储开销。 2021-07-19 20:55:12 +08:00
zhengchao
99e8ffb510 修改scan status重的测试用例,覆盖更多分支。 2021-07-19 20:55:11 +08:00
郑超
6d5a42fb4a 提高expr_plus和interval_plus表的扫描性能 2021-07-15 03:59:09 +00:00
zhengchao
1c08363dc4 bool Matcher对输入的item id(clause id)排序和去重,会改变外部ut_array内容,可能造成风险, 去除bool matcher 中的这部分代码。 2021-07-01 14:42:14 +08:00
zhengchao
00f782b0cf 修复配置数量为0时,流式扫描句柄计数错误。 2021-06-18 15:11:52 +08:00
郑超
8bf48ba1f3 Feature faster bool matcher on reptead item 2021-06-15 01:32:46 +00:00
zhengchao
fe73ef1156 Hierarchy中,使用垃圾回收方式释放compile,避免bool_matcher命中已删除的compile后,从而非法内存访问导致段错误。 修复 TSG-6548 2021-06-01 21:40:20 +08:00
zhengchao
7980d87924 bool matcher中引用了已经被释放的compile,导致段错误。 TSG-6548 2021-06-01 21:19:41 +08:00
zhengchao
6b9162272d 修复bug: Bool matcher重建时,maat hierarchy会重新生成clause id,会引发两种bug现象:
1. 新生成的clause id,与扫描状态mid中缓存的clause id冲突,导致误命中。引发 TSG-6419
2. mid中已缓存了clause id,但是由于构造的bool macher使用新的clause id,导致漏命中。
修复方案:
1. 将生成clause id的哈希表保存在hierarchy中, 保证增量更新前后clause id不变化;
2. 在mid中增加时间戳作为版本号,旧版本的mid不进行bool matcher运算,以免误命中。
2021-05-27 20:44:21 +08:00
zhengchao
df4fad9e8b 增加测试用例: 使用同一个mid扫描时, 更新boolmatcher。 2021-05-24 23:11:54 +08:00
zhengchao
85daf06a79 TSG-6345 redis断开期间redis内的数据发生变化,且版本号未发生回滚,导致maat无法加载新配置。 修复方法: 重连redis后,触发全量配置更新。 2021-05-13 17:51:23 +08:00