分类:
2008-01-09 15:59:44
目前在做的项目是一个入侵防护系统(IPS, Intrusion Prevention System)。
项目是这样子的:
一个10G网卡,俩口,一个口接内网,一个口接外网;在网卡中编写一套IPS系统,IPS的运行不需要主机的干预,也就是IPS Offload。
IPS系统分成两部分,一部分是IPS主体逻辑,一部分是IPS配置流程。IPS主题逻辑部分借鉴了netfilter;IPS配置流程则是由我来全新设计实现的。
IPS主体逻辑:
从外网口进来的数据包,要么被丢弃,要么被转发,采取何种动作,由IPS规则确定;规则可以由用户添加,也可以由IPS根据网络状况动态生成。规则的组织和匹配参考了netfilter的设计,由别的同事实现。
IPS配置流程:
目的是实现网卡上IPS的启动,停止,规则的添加、删除、修改,状态的统计。我提供了两种方式的配置,一种是命令行方式的配置,一种是通过WEB UI的方式。
命令行方式的配置包含三个层次:User App,Host Driver,NIC Firmware。
User App实现配置逻辑,它解释命令行,理解用户意图,并将意图向下传递
Host Driver充当桥梁的作用,将用户意图向下传递到网卡上,交给firmware处理
NIC Firmware根据用户意图,执行相应的动作
其中,
User App和Host Driver之间采用ioctl接口进行交互
Host Drvier与NIC Firmware之间采用消息通讯,采用DMA进行数据传输
WEB UI采用了PHP。采用编写PHP可扩展模块的方式提供一个接口在PHP页面中调用。该接口接收PHP页面传下来的配置参数,组成一个合法的User App命令行,然后执行。
突然发现,我参与的这一个项目,竟然把编程的各个层次由上到下都涉及到了,呵呵:
WEB UI PHP脚本
User App C
Host Driver 内核编程
NIC Firmware 固件开发
编程如此,足矣。
sxg