1、arkime
arkime是一个开源的、大型的IPv4 PCAP,用于索引和收集数据库系统,以前名字叫moloch
https://arkime.com/
2、suricata
3、zeek
https://zeek.org/
4、snort
5、libnids
6、tcpflow
7、wireshark
8、天旦科技的packet-agent
https://github.com/Netis/packet-agent
9、PF_ring和DPDK
10、rocknsm
http://rocknsm.io/
11、open ntop
内部采用的事DPI深度包检测技术,需要好好的看下。
12、netcap
网络抓包的引擎
13、wazuh主机入侵检测引擎
https://wazuh.com/
14、yulong-hids
驭龙HIDS是一款由YSRC 开源的入侵检测系统,由 Agent , Daemon , Server 和 Web 四个部分组成,
集异常检测、监控管理为一体,拥有异常行为发现、快速阻断
软中断和硬中断区别
hardirq和softirq
软中断是执行中断指令产生的,而硬中断是由外设引发的。
硬中断处理程序要确保它能够快速地完成任务,这样程序执行时才不会等待较长时间,称为上半部。
软中断处理硬中断未完成的工作,是一种推后执行的机制,属于下半部。
NAPI和DPDK的区别
在大量数据传输时,在收到硬件中断后,通过poll方式将传输的数据一次性接收,大大提高了接收数据的效率
cpu亲和性和绑核心
每个cpu核心一个线程,核心之间访问数据无需加锁。为了减少线程调度的开销,需要将Linux绑定到特定的核心上。如果系统支持NUMA架构,不同插槽上CPU的进程要避免访问远端内存,尽量访问本端内存。
PMD模式
DPDK针对Intel网卡实现了基于轮询方式的PMD驱动,该驱动由API、用户空间运行的驱动程序组成,该驱动使用无中断方式直接操作网卡的接收和发送队列(除了链路状态通知仍必须采用中断方式以外)
无锁队列 cas
数据包从网卡到上层的流程,这块涉及到linux网络内核协议栈的熟悉程度,必须得掌握
1,网卡多队列下,dpdk程序处理方式即采用多线程或多进程咋处理的。2,mbuf结构。 3,ring介绍下。4,网络各层头部意义。5,rss。6,连接跟踪表。
避免False Sharing:多核cpu中每个核心都拥有自己的L1、L2 cache,当运行多线程程序时,尽量算法上不需要共享变量,但实际执行中两个线程访问同一cache line的数据时就会引起冲突