基于Xen特权域的网络通信监控系统及方法与流程

文档序号:12120102阅读:330来源:国知局
本发明涉及Xen网络通信监控
技术领域
:,具体涉及一种基于Xen特权域的网络通信监控系统及方法。
背景技术
::Xen是基于X86架构、发展最快、性能最稳定、占用资源最少的开源虚拟化技术。Xen可以在一套物理硬件上安全的执行多个虚拟机,与Linux是一个完美的开源组合。它特别适用于服务器应用整合,可有效节省运营成本,提高设备利用率,最大化利用数据中心的IT基础架构。Xen作为虚拟机监控器直接运行在硬件上,提供虚拟化环境。同时,在Xen上运行一个具有管理接口(administrativeconsole)的虚拟机(Dom0)作为Xen的扩展,管理Xen和其他虚拟客户机(DomU)。Dom0是运行在Xen之上独一无二的虚拟机,拥有访问物理I/O资源的特权,并且可以与运行在Xen之上的其他虚拟机进行交互。所有的Xen虚拟环境都需要先运行Dom0,然后才可以运行其他的虚拟客户机。Dom0在Xen中担任管理员的角色,它负责管理其他虚拟客户机,虚拟客户机没有直接访问物理硬件的权限。作为客户虚拟机系统,虚拟客户机在Xen上并行的存在多个,它们之间相互独立,每个虚拟客户机都拥有自己所能操作的虚拟资源(如:内存,磁盘等)。而且允许单独的虚拟客户机进行重启和关机操作而不影响其他虚拟客户机。现有技术中对于虚拟机平台上各虚拟域网络通信信息的截获、分析以及管理缺少行之有效的方案,需要进一步创新及发展。技术实现要素:有鉴于此,本发明的目的在于实现对虚拟机平台上各虚拟域网络通信信息的截获、分析以及管理控制,由此提出一种基于Xen特权域的网络通信监控系统,同时提出一种基于Xen特权域的网络通信监控方法。为了实现以上目的,本发明提出的一种基于Xen特权域的网络通信监控系统,包括用户接口模块、内核监控模块和后端驱动模块;用户接口模块用于获得需要监控的设备列表并构建监控任务链表,并传递进行数据包截获的命令和监控任务链表参数,同时开启数据包接收线程;内核监控模块用于根据数据包截获命令从用户空间将监控任务链表的内容拷贝到内核中;后端驱动模块用于将符合监控任务链表中任务的数据包复制并存入数据包监控队列中;内核监控模块还用于从数据包监控队列中取出套接字缓存结构,并将其中网络传输的数据拷贝到用户接口模块中,供用户接口模块对数据包进行解析及将结果显示在用户界面。本发明进一步方案中,内核监控模块设计为字符设备,在该模块加载时被以设备的形式注册到内核中,用户接口模块通过控制设备的ioctl方法向内核监控模块发送请求并获取反馈数据。本发明进一步方案中,用户接口模块中具有数据包分析子模块,后端驱动模块中具有数据包截获子模块;数据包经过后端驱动被数据包截获子模块所截获,后端驱动模块拷贝一份数据包加入数据包分析队列中;内核监控模块从队列中取出一个数据包并将其发送给用户接口模块;用户接口模块的数据包分析子模块对数据包的信息进行解析并显示出来。本发明进一步方案中,数据包分析子模块具体用于根据套接字缓存结构获取相应信息,逐级分析数据包的协议类型、地址、端口信息;并将截获到的数据包根据系统对网络协议的具体实现进行重组和还原。本发明相应提出的一种基于Xen特权域的网络通信监控方法,在上述基于Xen特权域的网络通信监控系统的基础上实现,其包括数据包截获和分析方法;该数据包截获和分析方法包括以下步骤:A1、用户接口模块读取配置文件,从配置文件中获得需要监控的设备列表并构建监控任务链表;A2、用户接口模块调用ioctl系统调用,传递开始进行数据包截获的命令和监控任务链表参数,同时开启数据包接收线程,每隔一定时间向内核监控模块发送一次请求命令;A3、内核监控模块接收到进行数据包截获的命令后,将数据包截获功能使能标记置为可用状态,然后从用户空间将监控任务链表的内容拷贝到内核中;A4、后端驱动模块检查到使能标记为可用状态后,将符合监控任务链表中任务的数据包复制一份存入数据包监控队列中;A5、内核监控模块每次收到用户接口模块的请求命令时,从数据包监控队列中取出一个套接字缓存结构,并将其中网络传输的数据拷贝到用户接口模块中,数据包截获过程完成;A6、用户接口模块在数据包接收线程中调用数据包解析函数对收到的数据包进行解析,将结果显示在用户界面。本发明进一步方案中,数据包截获方法包括:从配置文件中读取需要监控的后端设备列表,并维护一个分析任务队列,对数据包进行初步检查,符合该任务队列中的某个任务时才会被拷贝截获,否则直接放行。本发明进一步方案中,用户接口模块在需要停止数据包截获分析功能时,向内核监控模块发送停止命令,并销毁相关数据结构;内核监控模块接到停止命令后将数据包截获功能使能标记置为不可用状态,以停止后端驱动模块对数据包的截获,并销毁内核中包括数据包监控队列在内的相关数据结构。本发明进一步方案中,还包括后端设备查询与控制方法;该后端设备查询与控制方法包括以下步骤:B1、用户接口模块调用后端设备数查询函数,向内核发送计数命令,获取后端设备数;B2、用户接口模块调用后端设备列表查询函数,根据获得的设备数,准备好接收后端设备信息的链表,向内核监控模块发送查看命令,接收到的后端设备信息存入准备好的链表中,并显示出来;B3、后端设备信息查询函数以传入的设备名称参数为关键词,在后端设备信息链表中查询到设备的信息,同时显示出来;B4设备的信息被作为用户接口模块传入内核监控模块的中断命令或恢复命令的参数;B5、内核监控模块根据接收到的中断命令或恢复命令,调用后端驱动模块中的连接控制函数,将对应的后端设备的连接状态字段相应置为断开或连接。本发明进一步方案中,还包括虚拟机进程网络连接查询方法;该虚拟机进程网络连接查询方法包括以下步骤:C1、将虚拟机的物理地址机器地址转换表内存页面映射到特权域中;C2、从Linux系统内核符号导出表中查询到init进程的进程描述符在内核中的虚拟地址,通过物理地址机器地址转换表将该虚拟地址转换为该地址所处的页框地址并计算出该地址在此页框中的偏移;C3、根据内核中进程描述符的结构定义,通过计算好的偏移量和之前得到的地址,获取需要字段的值,从而获得网络连接相关的信息。有益效果:本发明充分利用Xen特权虚拟机对虚拟化平台下其他虚拟机的有效管理,结合网络虚拟化中特权虚拟机对所有网络通信流量集中转发处理的特点,实现了对虚拟机平台上各虚拟域网络通信信息的截获、分析,以及可实现在监控网络的同时主动地根据网络运行状态实施人工的管理控制。附图说明图1是实施例一提出的基于Xen特权域的网络通信监控系统的原理框图。图2是图1的基础上增加的数据包截获与分析原理框图。图3是图1的基础上增加后端设备查询与控制原理框图。图4是图1的基础上增加的虚拟机进程信息查看原理框图。图5是实施例二提出的基于Xen特权域的网络通信监控方法中数据包截获截获流程示意图。图6是实施例二提出的基于Xen特权域的网络通信监控方法中后端设备查询与控制流程示意图。具体实施方式为了便于本领域技术人员理解,下面将结合附图以及实施例对本发明进行进一步描述。实施例一请参阅图1,实施例提出的一种基于Xen特权域的网络通信监控系统,包括用户接口模块10、内核监控模块20和后端驱动模块30;用户接口模块10用于(从配置文件中)获得需要监控的设备列表并构建监控任务链表,并传递进行数据包截获的命令和监控任务链表参数,同时开启数据包接收线程;内核监控模块20用于根据数据包截获命令从用户空间将监控任务链表的内容拷贝到内核中;后端驱动模块30用于将符合监控任务链表中任务的数据包复制并存入数据包监控队列中;内核监控模块20还用于从数据包监控队列中取出套接字缓存结构,并将其中网络传输的数据拷贝到用户接口模块10中,供用户接口模块10对数据包进行解析及将结果显示在用户界面。本实施例中,用户接口模块10承担着接收用户命令、处理内核反馈的数据、显示处理结果等功能。内核监控模块20与用户接口模块10和后端驱动模块30相互衔接,既有后台对用户命令进行处理的功能,又承担着在后端驱动和用户接口之间传递数据的功能,同时会将一些命令请求传递给后端驱动来处理。后端驱动模块30是在保留Xen后端驱动正常功能的前提下对其做了必要的修改,使其配合内核监控模块20完成网络通信监控的功能。后端驱动模块30和内核监控模块20共享部分数据结构,其中,后端驱动模块30首先被加载到Linux内核中,内核监控模块20随后加载,它们共享的数据结构和函数均由后端驱动模块30定义。内核监控模块20设计为字符设备,在该模块加载时被以设备的形式注册到内核中,用户接口模块10通过控制设备的ioctl方法向内核监控模块20发送请求并获取反馈数据。进一步方案请参阅图2,具体的,用户接口模块10中具有数据包分析子模块,后端驱动模块30中具有数据包截获子模块,数据包经过后端驱动被数据包截获子模块所截获,后端驱动模块30拷贝一份数据包加入数据包分析队列中;内核监控模块20从队列中取出一个数据包并将其发送给用户接口模块10;用户接口模块10的数据包分析子模块对数据包的信息进行解析并显示出来。在经过后端驱动的所有数据包中,并不是每一个都需要被截获,系统从配置文件中读取需要监控的后端设备列表,并维护一个分析任务队列,对数据包进行初步检查,符合该任务队列中的某个任务时才会被拷贝截获,否则直接放行。数据包的截获仅供分析之用,不影响数据包的正常通过,因此数据包会在被拷贝后立刻得以正常发送或接收。数据包分析子模块的具体功能是:根据套接字缓存结构获取相应信息,逐级分析数据包的协议类型、地址、端口信息;并将截获到的数据包根据系统对网络协议的具体实现进行重组和还原。本实施进一步方案中还可包括数据包过滤模块、后端设备查询与控制模块以及虚拟机进程信息查看模块。数据包过滤模块利用Linux操作系统提供的基于包过滤技术的iptables防火墙技术,将iptables防火墙作为数据包过滤模块的主要构成部分。本监控系统在用户接口模块10中增加iptables防火墙规则创建、删除及过滤开启、关闭的功能子模块,用户通过规则设置界面,可以对iptables防火墙的规则进行设置,或者查看已设置的规则并进行删除,增加,同时可以方便的开启和关闭系统的过滤功能。请参阅图3,后端设备查询与控制模块分为后端设备列表查询、后端设备信息查询和后端设备连接控制三部分功能。用户接口模块10进行后端设备列表查询时,首先调用后端设备数查询函数获取后端设备数,然后调用后端设备列表查询函数准备好接收后端设备信息的链表并向内核监控模块20发送有关命令;接收到的后端设备信息存入之前准备好的链表中,并显示在用户界面中。后端设备查询的命令由用户接口模块10发起,内核监控模块20遍历后端设备信息列表,将所有的后端设备相关信息返回给用户接口模块10。后端设备连接控制是通过用户接口模块10对后端设备发送控制命令到内核监控模块20。内核监控模块20通过查询后端设备信息列表,找到该后端设备的信息,再调用后端驱动模块,对该设备的连接状态进行改变,包括中端通信和通信恢复等。请参阅图4,虚拟机进程信息查看模块主要采用虚拟机内省技术,通过在特权虚拟机中映射客户虚拟机的内存数据,从Linux系统导出的内核符号表读取的init_task进程描述符虚拟地址,遍历系统中所有进程描述符,获取客户虚拟机的进程信息。该模块主要完成三个功能,包括查询进程所有打开文件的信息、查询该进程对应的网络连接状态和查询进程内存映射的信息。实施例二在实施例一的基础上,实施例二提出了一种基于Xen特权域的网络通信监控方法。以下主要介绍三部分:即包括数据包截获和分析方法、后端设备查询与控制方法、虚拟机进程网络连接查询方法;1、数据包截获和分析方法,请参阅图5,包括以下步骤S110至S160:S110、用户接口模块读取配置文件analysis.conf,从配置文件analysis.conf中获得需要监控的设备列表并构建监控任务链表analysis_task_list。S120、用户接口模块调用ioctl系统调用,传递开始进行数据包截获的命令START和监控任务链表参数,同时开启数据包接收线程,每隔一定时间向内核监控模块发送一次请求命令REQUEST。S130、内核监控模块接收到进行数据包截获的命令后,将数据包截获功能使能标记置为可用状态,然后从用户空间将监控任务链表的内容拷贝到内核中。S140、后端驱动模块检查到使能标记为可用状态后,将符合监控任务链表中任务的数据包复制一份存入数据包监控队列analysis_skb_queue中。S150、内核监控模块每次收到用户接口模块的请求命令REQUEST时,从数据包监控队列analysis_skb_queue中取出一个套接字缓存结构,并将其中网络传输的数据拷贝到用户接口模块中,数据包截获过程完成。本实施例中数据包截获方法包括:从配置文件中读取需要监控的后端设备列表,并维护一个分析任务队列,对数据包进行初步检查,符合该任务队列中的某个任务时才会被拷贝截获,否则直接放行。S160、用户接口模块在数据包接收线程中调用数据包解析函数对收到的数据包进行解析,将结果显示在用户界面。用户接口模块在需要停止数据包截获分析功能时,向内核监控模块发送停止命令,并销毁相关数据结构;内核监控模块接到停止命令后将数据包截获功能使能标记置为不可用状态,以停止后端驱动模块对数据包的截获,并销毁内核中包括数据包监控队列在内的相关数据结构。2、后端设备查询与控制方法;请参阅图6,包括以下步骤S210至S250:S210、用户接口模块调用后端设备数查询函数,向内核发送计数命令COUNT,获取后端设备数。S220、用户接口模块调用后端设备列表查询函数,根据获得的设备数,准备好接收后端设备信息的链表,向内核监控模块发送查看命令VIEW,接收到的后端设备信息存入准备好的链表中,并显示出来。S230、后端设备信息查询函数以传入的设备名称参数为关键词,在后端设备信息链表中查询到设备的信息,同时显示出来。S240设备的信息被作为用户接口模块传入内核监控模块的中断命令INTERRUPT或恢复命令RESUME的参数。250、内核监控模块根据接收到的中断命令INTERRUPT或恢复命令RESUME,调用后端驱动模块中的连接控制函数,将对应的后端设备的连接状态字段相应置为断开或连接。3、虚拟机进程网络连接查询方法;包括以下步骤S310至S330:S310、将虚拟机的物理地址机器地址转换表内存页面映射到特权域中。S320、从Linux系统内核符号导出表中查询到init进程的进程描述符在内核中的虚拟地址,通过物理地址机器地址转换表(即p2mtable)将该虚拟地址转换为该地址所处的页框地址并计算出该地址在此页框中的偏移。S330、根据内核中进程描述符的结构定义,通过计算好的偏移量和之前得到的地址,获取需要字段的值,从而获得网络连接相关的信息。以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1