一种虚拟机流量监控方法
【技术领域】
[0001]该发明涉及服务器虚拟机化虚拟机流量监控,尤其涉及物理服务器上的虚拟机流量监控方法和系统。
【背景技术】
[0002]服务器虚拟化可以提高计算资源的利用率,增强IT资源的管理灵活性,因此,该技术成为当前数据中心重要技术。然而,服务器虚拟化后,同一台物理服务器上存在多个虚拟机,这些虚拟机之间的通信无法被部署在物理服务器外的监控系统所感知。
[0003]现有方法是通过流量重定向策略来实现,包括两大类,一类是将虚拟机流量重定向到服务器外的网络设备上进行监控处理。另一类是将虚拟机流量通过虚拟机交换机进行重定向到虚拟机监控器(Virtual Machine Monitor,VMM)上的虚拟机中进行监控。第一类方法的优势是可以利用现有的监控资源,但需要修改网络协议驱动或增加新的网络硬件设备。第二类方法比较常见,但依赖虚拟交换机的可配置能力,缺乏性能方面的优化能力,同时,对于虚拟机与外部的通信流量监控只能交给外部监控设备来处理,缺乏统一监控的管理能力。
【发明内容】
[0004]本发明的目的在于:利用虚拟机监控器的钩子机制来获取虚拟机的通信数据流,并引入缓存机制和过滤策略,提高监控的效率;同时本发明公开了一套监控系统,可以实现对虚拟机间通信和虚拟机与服务器外部通信的统一监控。
[0005]本发明是这样实现的:
[0006]—种虚拟机流量监控方法包括以下步骤:
[0007]步骤一:在虚拟机监控器(Virtual Machine Monitor, VMM)上启动包含监控模块的虚拟机,通过内核模块加载接口,将数据包捕获模块和数据缓存模块加载到内核中;将监控模块和数据缓存模块建立通信连接;监控模块下发过滤地址列表到内核;监控模块发送启动命令到内核。具体流程如下:
[0008]①、启动包含监控模块的虚拟机后,监控模块也启动运行;
[0009]②、监控模块调用内核模块加载接口,加载数据包捕获模块和数据缓存模块到内核;
[0010]③、数据缓存模块与安全监控模块建立连接;
[0011]④、安全监控模块向所述数据缓存模块发送地址过滤表;
[0012]⑤、安全监控模块向所述数据缓存模块发送启动指令;
[0013]⑥、数据缓存模块设置内核全局变量值为启动。
[0014]步骤二:数据包捕获模块监听通过虚拟机监控器VMM内核TCP/IP协议栈中数据;根据数据地址过滤表复制数据包,并存储到数据缓存模块的缓存中;数据模块模块将数据发送给监控模块。具体流程如下:
[0015]①、数据缓存模块判断所述内核全局变量值,如果为启动,则分配一定大小的缓存,并启动数据缓存处理进程;否则不作任何处理;
[0016]②、数据包捕获模块判断所述内核全局变量值,如果为启动,则启动所述数据包捕获模,否则,不作任何处理;
[0017]③、数据包捕获模块判断当前TCP/IP协议栈数据包地址是否匹配所述地址过滤表;匹配则复制数据包并存储到所述数据缓存模块的缓存中;否则,不作任何处理;
[0018]④、数据缓存进程判断所述缓存内是否为空,不空则读取缓存数据并通过所述数据缓存模块与所述安全监控模块建立的连接发送数据;空则不做任何处理。
[0019]步骤三:监控模块提取数据包的基本信息,统计分析数据流量,展示统计分析结果及告警。具体流程如下:
[0020]①、监控模块调用预处理模块提取数据包头信息,包括源目的MAC、源目的IPji据包大小;
[0021]②、监控模块统计数据包所在的会话流量,会话内容,并根据入侵检测规则分析入侵行为;据恶意代码规则检测恶意代码;
[0022]③、统计分析模块根据输出配置要求,输出统计分析结果,并在页面展示;
[0023]④、统计分析模块根据告警配置要求,输出告警结果,并在页面展示。一种虚拟机流量监控系统,其特征在于,所述系统包括如下模块:
[0024]①、监控模块:用于部署数据包捕获模块、数据缓存模块;调用预处理模块和统计分析模块;与数据缓存模块建立通信连接;接受数据缓存模块发送来的数据包,下发过滤地址表、命令给数据缓存模块;管理监控配置;预处理模块:获取所述数据包头信息,包括源目的MAC、源目的IP、数据包大小;
[0025]②、统计分析模块:用于对所述的预处理模块的处理结果进行统计分析,包括会话流量统计,会话内容还原;根据入侵检测规则分析入侵行为;根据恶意代码规则检测恶意代码;根据输出配置和告警配置,输出统计分析结果和告警结果,并在页面展示;
[0026]③、数据包捕获模块:用于在虚拟机监控器(VMM)内核监控TCP/IP协议栈的数据包,并根据所述地址过滤表复制所述数据包;并存储到数据缓存模块的缓存中;
[0027]④、数据缓存模块:用于建立与所述监控模块的连接;发送所缓存中的数据给所述监控模块;接受所述监控模块发送的指令和数据;
[0028]本发明相较于现有技术具有的积极效果在于:本发明专利可以解决服务器虚拟化带来的虚拟机间通信失去监控的问题,并且实现了同一物理服务器上虚拟机间的通信以及虚拟机与服务器外部网络的通信的统一监控。另外,本发明专利通过引入缓存机制,包过滤机制,离线存储机制,解决了监控功能对虚拟机监控器的性能影响问题。
【具体实施方式】
[0029]本发明为虚拟机之间的流量监控以及虚拟机和服务器外部网络之间的流量监控提供了一种统一的监控系统。初始化阶段:在虚拟机监控器上启动包含监控模块的虚拟机,数据包捕获模块和数据缓存模块部署到内核,监控模块和数据缓存模块建立连接,监控模块下发过滤地址列表到内核,监控模块发送启动命令到内核,监控系统部署完毕。
[0030]本发明中,数据包捕获模块和数据缓存模块都运行在内核,在运行前先通过内核编程接口加载到内核中。由于监控模块部署在虚拟机中,而虚拟机运行在用户态,因此,需要构建内核和用户空间的通信连接。建立连接后,监控模块发送地址过滤列表给内核,提供数据包捕获模块使用。然后,监控模块内核发送启动命令至内核,数据捕获模块及数据缓存模块开始工作。
[0031]数据捕获阶段:数据包捕获模块监听TCP/IP协议栈数据,根据地址过滤表复制数据包,并存储到数据缓存模块的缓存中,数据缓存模块将数据发送给监控模块。
[0032]本发明中,数据包捕获模块检查每一个流经TCP/IP协议栈的数据包,根据每个数据包的MAC值或IP信息,与地址过滤列表中的地址信息进行比对,如果匹配,则相应的数据包被复制一份,并存储到数据缓存模块的缓存中。数据缓存模块中的缓存是数据缓存模块预先分配的,并且可以根据实际用量动态进行扩展;数据缓存模块发现缓存不空时,通过内核和用户空间建立的连接将数据包发送给虚拟机中的监控模块;
[0033]数据统计分析阶段:监控模块提取数据包头基本信息,统计分析数据流量,展示统计分析结果及告警。
【主权项】
1.一种虚拟机流量监控方法,其特征在于包括以下步骤: 步骤一:在虚拟机监控器(Virtual Machine Monitor, VMM)上启动包含监控模块的虚拟机,通过内核模块加载接口,将数据包捕获模块和数据缓存模块加载到内核中;将虚拟机监控模块和数据缓存模块建立通信连接;监控模块下发过滤地址列表到内核,监控模块发送启动命令到内核; 步骤二:数据包捕获模块监听TCP/IP协议栈中数据;根据地址过滤表复制数据包,并存储到数据缓存模块的缓存中;数据缓存模块将数据发送到监控模块; 步骤三:监控模块提取数据包的基本信息,统计分析数据流量,展示统计分析结果及告目O2.根据权利要求1所述的监控方法,其特征在于:所述的步骤一中的具体流程如下: ①、启动包含监控模块的虚拟机后,监控模块也启动运行; ②、监控模块调用内核模块加载接口,加载数据包捕获模块和数据缓存模块到内核; ③、数据缓存模块与监控模块建立连接; ④、监控模块向所述数据缓存模块发送地址过滤表; ⑤、监控模块向所述数据缓存模块发送启动指令; ⑥、数据缓存模块设置内核全局变量值为启动。3.根据权利要求1所述的监控方法,其特征在于:所述的步骤二的具体流程如下: ①、数据缓存模块判断所述内核全局变量值,如果为启动,则分配一定大小的缓存,并启动数据缓存处理进程;否则不作任何处理; ②、数据包捕获模块判断所述内核全局变量值,如果为启动,则启动所述数据包捕获模,否则,不作任何处理; ③、数据包捕获模块判断当前TCP/IP协议栈数据包地址是否匹配所述地址过滤表;匹配则复制数据包并存储到所述数据缓存模块的缓存中;否则,不作任何处理; ④、数据缓存进程判断所述缓存内是否为空,不空则读取缓存数据并通过所述数据缓存模块与所述监控模块建立的连接发送数据;空则不做任何处理。4.根据权利要求1所述的监控方法,其特征在于:所述的步骤三的具体流程如下: ①、监控模块接受所述数据缓存模块发送来的数据;并调用数据预处理模块提取数据包头信息,包括源目的MAC、源目的IP、数据包大小; ②、监控模块调用统计分析模块统计数据包所在的会话流量、会话内容,并根据入侵检测规则分析入侵行为;根据恶意代码规则检测恶意代码; ③、统计分析模块根据输出配置要求,输出统计分析结果,并在页面展示; ④、统计分析模块根据告警配置要求,输出告警结果,并在页面展示。5.一种虚拟机流量监控系统,其特征在于,所述系统包括如下模块: ①、监控模块:用于部署数据包捕获模块、数据缓存模块;调用预处理模块和统计分析模块;与数据缓存模块建立通信连接;接受数据缓存模块发送来的数据包,下发过滤地址表、命令给数据缓存模块;管理监控配置; ②、预处理模块:获取所述数据包头信息,包括源目的MAC、源目的IP、数据包大小; ③、统计分析模块:用于对所述的预处理模块的处理结果进行统计分析,包括会话流量统计,会话内容还原;根据入侵检测规则分析入侵行为;根据恶意代码规则检测恶意代码; 根据输出配置要求和告警配置要求,输出统计分析结果和告警结果,并在页面展示; ④、数据包捕获模块:用于在虚拟机监控器(VMM)内核监控TCP/IP协议栈的数据包,并根据所述地址过滤表复制所述数据包;并存储到数据缓存模块的缓存中; ⑤、数据缓存模块:用于建立与所述监控模块的连接;发送所缓存中的数据给所述监控模块;接受所述监控模块发送的指令和数据。
【专利摘要】本发明公开了一种虚拟机流量监控方法及系统,首先启动包含监控模块的虚拟机;部署数据包捕获模块和数据缓存模块到虚拟机监控器内核中;数据包捕获模块根据过滤机制复制流经TCP/IP协议栈的数据包,并存储到数据缓存模块的缓存中;数据缓存模块将缓存中的数据包转发给监控模块;监控模块对数据包进行统计分析,实现对虚拟机的流量监控。解决服务器虚拟化带来的虚拟机间通信失去监控的问题,并且实现了同一物理服务器上虚拟机间的通信以及虚拟机与服务器外部网络的通信的统一监控。
【IPC分类】H04L12/861, H04L29/06
【公开号】CN105635035
【申请号】CN201410583260
【发明人】李 东
【申请人】青岛金讯网络工程有限公司
【公开日】2016年6月1日
【申请日】2014年10月27日