更新时间:2024-08-09
AD产品抓包指导
AD产品自7.0版本开始,数据面业务均迁移到应用层,底层使用DPDK对接网口。传统的Linux抓包tcpdump命令在内核执行,无法抓取被DPDK接管的网口,AD引入tcpdump库对接应用层数据进程进行抓包。
内部抓包性能测试发现不同设备的产品版本、CPU和网卡类型等差别,没办法有一个统一数值来限制抓包,但根据测试可以明确哪些抓包因子对性能影响较大:
- 使用any口性能消耗明显高于使用具体口。使用像eth/bond等具体口时,抓包过滤条件指定IP、端口影响不大,使用any口时,抓包条件影响大。
- 流量增大,CPU消耗显著升高
- 抓包写文件比不写文件对CPU和内存消耗明显增多
- 命中抓包匹配条件的包越多,资源消耗越大
通过对比数据,总结抓包影响因子排序:指定网口 > 写文件 > 流量 > 抓包条件。
tcpdump抓包会根据解析条件层级匹配,顺序依次是:网口、二层、三层、四层等条件,若匹配成功后,则将数据包拷贝一份数据,因此如果匹配的条件越多,性能消耗越多。
网口是一个层级结构,上层接口引用下层,比如bond口引用普通eth。如果指定any口,则每一层的网口都会过滤一次匹配条件,抓包性能消耗会被按当前网口的层级放大。
后续抓包,遵循以下策略:
- 抓包需要尽可能详细制定抓包条件,指定具体的接口比如eth1、bond1,,指定匹配的源、目的IP和端口等,既可以减少包拷贝,又能减少写文件大小。
- 单次抓包需要限定数量,一次抓包数量范围建议在10w以内,避免占满空间。后台自动抓包脚本需要限制抓包时间,建议不超过1天,防止忘记。
- 若使用自动抓包脚本,需观察客户设备以往流量无较大波动,历史CPU占用不超过40%,否则需要在业务高峰期值守观察。
- 0~AD7.0.4版本抓包性能未做优化,避免长时间抓包,抓包时需要观察
无论什么样的抓包,执行后均需要观察2~5分钟左右的CPU、内存和磁盘占用,发现资源占用较高则及时停止。
AD产品抓包指导V2.doc ( 0.02M )