blob: 99628025a6285c89fd84062006b2522fc67660f5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
1.用三个寄存器实现了一个以三个hash函数为基础的Bloom Filter,通过布隆过滤器判断数据包是否在一个集合中:
如果是SYN数据包,会计算hash并将记录插入布隆过滤器的相应位置;
如果是其他数据包,则计算hash读取布隆过滤器相应位置,全为1表示该数据包存在集合中,可以继续匹配ipv4_host表,否则不能继续向下执行匹配。
2./pkt文件夹中:
send_syn.py构造一个SYN数据包并发出,bloom_filter检测到SYN数据包会进行插入操作,给布隆过滤器的相应位置置位。
send_exist.py构造一个五元组和send_syn.py中一样的数据包,检测是否可以命中布隆过滤器,命中就可以继续匹配ipv4_host table。
send_not_exist.py构造一个和上面不同五元组的数据包,不会命中布隆过滤器(也有概率会命中,就是误报)
3./ptf文件夹中是ptf集成测试文件,有三个class:
insertBloomF: 构造SYN数据包,在布隆过滤器相应位置置位
hitBloomF: 和insertBloomF中五元组一样的数据包,可以命中布隆过滤器,可以进行ipv4_host table的匹配
NhitBloomF: 五元组不同于上面的数据包,不能命中布隆过滤器,不能匹配ipv4_host
|