论文部分内容阅读
网络流量监测分析是网络管理、控制与优化的重要手段。数据包分析复杂度提高与带宽的增加为在通用计算平台上实现高速链路流量监测分析提出巨大的挑战,在多核平台上实现多线程流量并行分析是解决性能挑战可行方案之一。Libpcap是当前应用最为广泛的数据包捕获库,使用libpcap单线程API开发多线程流量监测分析程序,开发难度大。使用多线程进行流量监测分析需要多线程的数据包捕获库,设计与实现高效、通用、兼容、灵活的多线程数据包捕获库具有重大意义。
本文设计实现了一个高效、通用、灵活与libpcap兼容的多线程数据包捕获库libpcap-MT。libpcap-MT架构分为两部分:底层PACKET-MT套接字,上层libpcap-MTAPI封装。PACKET-MT套接字从网络捕获数据包,并根据用户的分发策略将数据包分发到不同的缓存队列中。PACKET-MT采用的内核态的数据包分发、无锁的多缓存队列、共享内存等方法,保证了上层网络流量监测分析系统的性能和可扩展性,对数据包级并行分析和业务流级并行分析都能提供很好的支持。上层的libpcap-MT API封装为用户提供了使用PACKET-MT套接字进行多线程并行分析的简单、通用的接口。libpcap-MT API兼容于libpcap API,方便用户编程开发以及将现有的系统升级支持多线程并行分析。libpcap-MT API还提供了类C的数据包分发策略描述PDD,使用PDD可以灵活地编写数据包分发策略。基于libpcap-MT实现多线程ourmon,验证libpcap-MT的数据包处理性能。本文从最高吞吐率和基准线两个方面对ourmon在libpcap和libpcap-MT下的不同线程的性能进行了分析。实验结果表明:libpcap-MT的效率很高,在最大吞吐率的情况下,它的系统开销小于1%;当系统较空闲时,它的系统开销在2%~4%之间。libpcap-MT的高效保证了上层应用程序的性能,基于libpcap-MT的多线程ourmon较原始多线程ourmon性能数据包处理性能提高了20%~25%,并且具有更强的可移植性。