1.一种虚拟网络的流量采集方法,其特征在于,包括:
初始化用户态采集模块和内核采集模块的流量采集的软件运行环境;
建立通信通道,所述通信通道是所述用户态采集模块和所述内核采集模块之间的数据传输通道;
所述用户态采集模块申请大页内存,在所述大页内存上创建环形缓存区,并将所述大页内存的物理地址通过所述通信通道传输至所述内核采集模块;
所述内核采集模块接收所述大页内存的物理地址,并将所述大页内存的物理地址映射成内核地址空间的线性地址,并获取所述环形缓冲区在所述内核采集模块的缓冲区地址;
所述内核采集模块采集虚拟交换机接收到的数据包,并根据所述缓冲区地址将所述数据包保存至所述环形缓冲区,同时更新所述环形缓冲区的写指针位置;
所述用户态采集模块如果监测到所述环形缓冲区更新,则访问所述环形缓冲区并获取所述数据包,统计流经所述虚拟交换机的数据流量,同时更新所述环形缓冲区的读指针位置。
2.如权利要求1所述的方法,其特征在于,所述通信通道是Netlink通道;
所述建立通信通道,包括:
根据套接字创建函数,创建套接字;
设置所述套接字的本地地址和目的地址,所述本地地址为所述用户态采集模块的物理地址,所述目的地址为所述内核采集模块的物理地址;
如果第一监听函数监听到所述套接字接收到连接请求,则建立所述通信通道。
3.如权利要求1所述的方法,其特征在于,所述通信通道是管道通道;
所述建立通信通道,包括:
在所述用户态采集模块,根据创建函数建立所述管道通道;
如果第二监听函数监听到所述内核采集模块发送连接请求,则通过所述管道通道连接所述用户态采集模块和所述内核采集模块。
4.如权利要求1所述的方法,其特征在于,所述将所述大页内存的物理地址通过所述通信通道传输至所述内核采集模块,包括:查找与所述通信通道对应的传输函数;
根据所述传输函数,将所述大页内存的物理地址传输至所述内核采集模块。
5.如权利要求1所述的方法,其特征在于,所述将所述大页内存的物理地址映射成内核地址空间的线性地址,并获取所述环形缓冲区在所述内核采集模块的缓冲区地址,包括:获取宿主机和虚拟机之间的内存分配关系;
根据所述内存分配关系,将所述大页内存的物理地址映射成所述内核地址空间的线性地址;
根据所述线性地址、所述大页内存和所述环形缓冲区的地址分配关系,计算所述环形缓冲区的在所述内核采集模块的缓冲区地址。
6.如权利要求1所述的方法,其特征在于,所述内核采集模块采集虚拟交换机接收到的数据包,包括:判断所述虚拟交换机的类型,所述类型包括Linux Bridge和OpenvSwitch;
如果所述虚拟交换机的类型为Linux Bridge,则所述内核采集模块注册钩子函数,并根据所述钩子函数切入所述内核采集模块,采集所述虚拟交换机接收到的数据包;
如果所述虚拟交换机的类型为OpenvSwitch,则所述内核采集模块利用流表结构ovs datapath执行管理操作flow中的采集动作action,采集所述虚拟交换机接收到的数据包。
7.如权利要求1所述的方法,其特征在于,所述根据所述缓冲区地址将所述数据包保存至所述环形缓冲区,同时更新所述环形缓冲区的写指针位置,包括:获取所述写指针位置;
从所述缓冲区地址中的所述写指针位置开始,在所述环形缓冲区存储所述数据包,并更新所述写指针位置。
8.一种虚拟网络的流量采集装置,其特征在于,包括:
初始化单元,用于初始化用户态采集模块和内核采集模块的流量采集的软件运行环境;
通道建立单元,用于建立通信通道,所述通信通道是所述用户态采集模块和所述内核采集模块之间的数据传输通道;
缓存创建单元,用于所述用户态采集模块申请大页内存,在所述大页内存上创建环形缓存区,并将所述大页内存的物理地址通过所述通信通道传输至所述内核采集模块;
地址获取单元,用于所述内核采集模块接收所述大页内存的物理地址,并将所述大页内存的物理地址映射成内核地址空间的线性地址,并获取所述环形缓冲区在所述内核采集模块的缓冲区地址;
数据存储单元,用于所述内核采集模块采集虚拟交换机接收到的数据包,并根据所述缓冲区地址将所述数据包保存至所述环形缓冲区,同时更新所述环形缓冲区的写指针位置;
流量统计单元,用于所述用户态采集模块如果监测到所述环形缓冲区更新,则访问所述环形缓冲区并获取所述数据包,统计流经所述虚拟交换机的数据流量,同时更新所述环形缓冲区的读指针位置。
9.一种存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1‑7中任一项所述的虚拟网络的流量采集方法对应的操作。
10.一种计算机设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1‑7中任一项所述的虚拟网络的流量采集方法对应的操作。