程序分类
跟踪类
程序
主要用于从系统中提取跟踪信息,进而为监控,排错、性能优化等提供数据支持
网络类
程序
网络类
程序,主要对网络数据包进行过滤和处理,进而实现网络的观测、过滤、流量控制以及性能优化等各种丰富的功能。在触发位置的不同,网络类
又可以分为:
(高速数据路径)程序,
(流量控制)程序,套接字程序、以及
程序。
(高速数据路径)程序
,在网络驱动程序刚刚收到数据包的时候触发执行。由于无需通过繁杂的内核协议栈,
程序可以用来实现高性能的网络处理方案,常用于
防御、防火墙、4层负载均衡等场景
需要注意的是
不是绕过了内核协议栈,它只是在内核协议栈之前处理了数据包,而处理过了的数据包还可以正常通过内核协议栈继续处理。
根据网卡和网卡驱动是否原生支持
程序,
程序又分为以下三种模式:
- 通用模式:不需要网卡和网卡驱动支持,
程序像是常规的网络协议栈一样运行在内核中,性能比较差,一般用于测试
- 原生模式:需要网卡驱动程序的支持,
程序在网卡驱动程序的早期路径运行
- 卸载模式:需要网卡固件支持
卸载,
程序直接运行在网卡上,不需要消耗主机的CPU资源,具有极好的性能。
无论那种模式,
程序在处理过网络包之后,都需要根据
程序执行结果,来决定数据包的去处。下面是5中
程序的执行结果
:丢包。数据包尽早丢弃可以减少CPU处理时间,因为用于防火墙、DDoS防御等丢弃非法数据包的场景。
: 内核协议栈接受到网络包,按照正常流程继续处理。
/
: 数据包在
程序修改后转发到网卡中,继续按正常的内核协议栈流程处理,常用于负载均衡。
:
程序运行出错,数据包丢弃并记录错误行为,以便排查。