阅读:1597回复:0
请教 ndis 中间层 如何收发包的时候过滤大量的规则,规则内存至少在50M以上,且会不断增长
如题,我现在遇到的问题就是,在收发包的时候过滤海量规则,规则大小目前至少有50M,且会不断增长,我考虑了几个思路,还没试验,这里我的问题主要是内存占用太多,规则的过滤可以排序后写个搜索算法,这个不是问题。
1. 在非分页内存中直接分配这么大的内存,目前我不确定这么分配会不会对系统造成影响,还有以后分配的会越来越大,内存使用已经超出产品的规定。 2. 考虑在内核中用内存映射文件来分批加载规则,这么做需要:1)将收发包后的处理全部移到线程里 2) 建立一个规则外的库,先过这个库,不在这个库里,就过规则库,在内存中先load 一小部分规则,不在这里面,就分批用内存映射文件来load内存过规则。 这种方法我没尝试,不知道行不,但感觉可能很多包都得分批内存映射文件来过规则,cpu会不会很忙,这种方法,是可以解决内存占用问题。 请教各位,上述方法是否可行,有没有其他好的方法? |
|