背景:
公司需要扩展产品线,推出一款X86下DPI的产品,本人为架构师,主要负责产品的关键技术研究,产品架构的搭建,任务的分解分配,在不设计到公司机密的情况下,每天记录下点滴。
产品主要借鉴开源snort,目前本人已经大概全部看完,被其插件的设计思想深深打动。
以下是初步的设计框架:(见图片)
插件名称 | 插件功能 |
预处理插件: | 协议解码,协议合法性检查,分片重组,会话连接,端口学习,模式匹配,策略模板,特征过滤,acl过滤,异常检查,协议关联认证。 |
输出插件 | CLI,系统监控,日志,告警,数据库,抓包,统计,调试。 |
规则库插件: | 拟采用:动作,协议,规则三级链表。热重启的冗余备份注册 |
检测插件: | 对象识别,检测算法注册,hash算法注册,黑白名单 |
以上插件全部采用链表实现,主要都可以分为三步:注册->初始化->调用,支持后续开发自定义插件。 |
因为是公司第一个版本,只讲一些关键技术实现,后续后进一步补充功能,这就是插件实现的好处,新加一个功能只需要插入一个插件即可。
第一天写到这里,感兴趣的可以后续继续关注,请勿转载,谢谢!