一种面向仿真网络的链路数据采集方法与流程

文档序号:14447473阅读:242来源:国知局
一种面向仿真网络的链路数据采集方法与流程

本发明涉及计算机网络技术领域,特别是涉及一种面向仿真网络的链路数据采集方法。



背景技术:

随着云平台的发展,对云平台内的流量采集统计也成了研究的重点,有对云平台的虚拟机外网流量统计方法的研究,它是针对云平台上虚拟路由上的外网流量进行采集,而没有一种针对云平台内虚拟机间的链路数据采集方法,这其中涉及到多种链路,有宿主机内的虚拟链路,跨宿主机间的虚拟链路,以及虚实互联链路等,需要提供一种能采集云平台多样化链路的数据采集方法。

openstack作为典型的云平台,成为了研究试验的首选,本发明所用的openstack包含一个控制节点,两个网络节点和四个计算节点,其中虚拟机是运行在计算节点上的,因此是面向计算节点上的虚拟机进行数据采集,需要openstack平台的控制节点、网络节点、计算节点协同对所采集的链路涵盖的虚拟机的端口进行区分。



技术实现要素:

本发明提出一种面向仿真网络的链路数据采集方法,借助openstack平台构建经典的网络拓扑作为测试环境,支持大规模、多样化链路数据采集,提供采集数据本地存储和远程数据库实时传输存储两种方案。

本发明解决上述问题的技术方案如下:

s1:搭建openstack云平台基本环境,搭建时选择ovs作为虚拟交换机,且网络节点network和控制节点controller分开搭建,包含m个网络节点network和n个计算节点compute,m、n为正整数;

s2:在openstack平台上,搭建目标仿真网络,包括网络节点与网络链路,所述网络节点包括实物节点与虚拟节点,所述网络链路包括宿主机内的虚拟链路、跨宿主机间的虚拟链路、虚实互联链路;

s3:所搭建的目标仿真网络中,链路用集合表示如下:

所述宿主机内的虚拟链路集合表示为{(vns1,vnn1,networkvnn1,vnd1,computevn1),…,(vnsi,vnni,networkvnni,vndi,computevni),…,(vnsi,vnni,networkvnni,vndi,computevni)},其中vnsi,vndi表示链路中的虚拟机,computevni表示虚拟机vnsi,vndi所在的计算节点,vni=1,2,…,n,vnni表示链路中的网络,networkvnni表示网络vnni所在的网络节点,vnni=1,2,…,m;i表示宿主机内的虚拟链路的总条数;

所述跨宿主机间的虚拟链路集合表示为{(vks1,computevks1,vkn1,networkvkn1,vkd1,computevkd1),…,(vksj,computevksj,vknj,networkvknj,vkdj,computevkdj),…,(vksj,computevksj,vknj,networkvknj,vkdj,computevkdj)},其中vksj,vkdj表示链路中的虚拟机,computevksj,computevkdj分别表示虚拟机vksj,vkdj所在的计算节点,vksj=1,2,…,n,vkdj=1,2,…,n,vknj表示链路中的网络,networkvknj表示网络vknj所在的网络节点,vknj=1,2,…,m;j表示跨宿主机的虚拟链路的总条数;

所述虚实互联链路集合表示为{(xss1,xsn1,networkxsn1,xsd1,computexsd1),…,(xssk,xsnk,networkxsnk,xsdk,computexsdk),…,(xssk,xsnk,networkxsnk,xsdk,computexsdk)},其中xssk,xsdk分别表示链路中的实物机、虚拟机,computexsdk表示虚拟机xsdk所在的计算节点,xsdk=1,2,…,n,xsnk表示链路中的网络,networkxsnk表示网络xsnk所在的网络节点,xsnk=1,2,…,m;k表示虚实互联链路的总条数;

s4:在控制节点controller上部署配置解析程序,在网络节点network上部署ip地址解析程序,在计算节点compute上部署端口解析程序,上述三个程序用于配置解析虚拟机的端口qvo_name与ip地址的对应关系,从而筛选与目标链路中的网络相同ip地址所对应的端口qvo_name;此外,在计算节点compute上部署数据采集程序,用于实时数据采集;

s5:基于步骤s4所部署的配置解析程序、ip地址解析程序、端口解析程序,选择所要采集的链路集合,并对其进行配置:对于宿主机内的虚拟链路(vnsi,vnni,networkvnni,vndi,computevni),先用所述配置解析程序、ip地址解析程序、端口解析程序识别虚拟机vnsi或vndi的目标端口qvo_namei,再用计算节点computevni上的数据采集程序对目标端口qvo_namei进行监听;对于跨宿主机的虚拟链路(vksj,computevksj,vknj,networkvknj,vkdj,computevkdj),先用所述配置解析程序、ip地址解析程序、端口解析程序识别虚拟机vksj或vkdj的目标端口qvo_namej,再用计算节点computevksj或computevkdj上的数据采集程序对目标端口qvo_namej进行监听;对于虚实互联链路(xssk,xsnk,networkxsnk,xsdk,computexsdk),先用所述配置解析程序、ip地址解析程序、端口解析程序识别虚拟机xsdk的目标端口qvo_namek,再用计算节点computexsdk上的数据采集程序对目标端口qvo_namek进行监听;

s6:对步骤s5中位于同一计算节点compute上的多个目标端口qvo_name设置端口镜像,用其上的数据采集程序对生成的镜像口veth0进行监听实现对多个目标端口的监听;

s7:启动步骤s4所部署的数据采集程序,并实时对所采集到的数据进行存储。

其中,所述宿主机内的虚拟链路是指该链路连接两个虚拟节点,且这两个虚拟节点在同一个物理服务器内;所述跨宿主机间的虚拟链路是指该链路连接两个虚拟节点,且这两个虚拟节点在不同的物理服务器上;所述虚实互联链路是指该链路连接实物节点与虚拟节点。

步骤s5中利用配置解析程序、ip地址解析程序、端口解析程序,识别所选链路中的目标端口qvo_name的方法为:

s5.1、控制节点controller上的配置解析程序,处理参数请求,得到链路中需要采集的虚拟机所在的计算节点位置及链路中的网络ip;

s5.2、计算节点compute上的端口解析程序解析相应路径文件得到mac地址与端口qvo_name的对应关系mac:qvo_name;

s5.3、网络节点network上的ip地址解析程序解析相应路径文件得到ip地址与mac地址的对应关系ip:mac;

s5.4、配置解析程序处理上述两组对应关系,根据相同的mac地址,得到ip地址与端口qvo_name的对应关系ip:qvo_name;

s5.5、最后筛选出与所选链路中的网络相同ip地址所对应的端口qvo_name。

步骤s7中启动数据采集程序,实时对所采集到的数据进行存储的流程为:

s7.1、启动数据采集程序,使用监测进程对数据文件目录进行监听;

s7.2、对生成的数据文件,采用压缩算法进行压缩;

s7.3、将压缩文件发送给接收端服务器;

s7.4、服务端接收到压缩文件,先进行解压缩,再将数据文件解析入库。

本发明的有益效果如下:

1、可以实现多样链路:宿主机内的虚拟链路、跨宿主机的虚拟链路、虚实互联链路的分布式采集;

2、采集节点可灵活配置:既可以全采集,也可以针对某条链路专门采集;

3、针对每个计算节点部署了一个采集探针,该采集探针是独立面向虚拟机所涵盖的链路的,即通过所部署的配置解析程序、ip地址解析程序、端口解析程序,能够区分多网卡虚拟机的不同端口所对应的网络ip;

附图说明

图1为本发明面向仿真网络的链路数据采集方法的流程图。

图2为本发明实施例所使用的网络拓扑。

图3为配置解析程序、ip地址解析程序、端口解析程序与数据采集程序的部署图。

图4为配置解析程序、ip地址解析程序、端口解析程序识别目标端口的流程图。

图5为数据采集程序的流程图。

图6为实施例数据库中所存储的部分采集数据。

具体实施方式

下面结合附图和实施例对本发明的具体实施方式做进一步描述。

本实施例的流程图如图1所示,技术方案如下:

s1:搭建openstack云平台基本环境,搭建时选择ovs作为虚拟交换机,且网络节点network和控制节点controller分开搭建,本实施例包含2个网络节点network和7个计算节点compute。具体的网络节点数和计算节点数可根据实验需要设计。

s2:在openstack平台上,搭建目标仿真网络,包括网络节点与网络链路,所述网络节点包括实物节点与虚拟节点,所述网络链路包括宿主机内的虚拟链路、跨宿主机间的虚拟链路、虚实互联链路。

s3:所搭建的目标仿真网络中,链路用集合表示如下:

所述宿主机内的虚拟链路集合表示为{(vns1,vnn1,networkvnn1,vnd1,computevn1),…,(vnsi,vnni,networkvnni,vndi,computevni),…,(vnsi,vnni,networkvnni,vndi,computevni)},其中vnsi,vndi表示链路中的虚拟机,computevni(vni∈{1,2,3,4,5,6,7})表示虚拟机vnsi,vndi所在的计算节点,vnni表示链路中的网络,networkvnni(vnni∈{1,2})表示网络vnni所在的网络节点,i表示宿主机内的虚拟链路的总条数;

所述跨宿主机间的虚拟链路集合表示为{(vks1,computevks1,vkn1,networkvkn1,vkd1,computevkd1),…,(vksj,computevksj,vknj,networkvknj,vkdj,computevkdj),…,(vksj,computevksj,vknj,networkvknj,vkdj,computevkdj)},其中vksj,vkdj表示链路中的虚拟机,computevksj,computevkdj(vksj,vkdj∈{1,2,3,4,5,6,7})分别表示虚拟机vksj,vkdj所在的计算节点,vknj表示链路中的网络,networkvknj(vknj∈{1,2}))表示网络vknj所在的网络节点,j表示跨宿主机的虚拟链路的总条数;

所述虚实互联链路集合表示为{(xss1,xsn1,networkxsn1,xsd1,computexsd1),…,(xssk,xsnk,networkxsnk,xsdk,computexsdk),…,(xssk,xsnk,networkxsnk,xsdk,computexsdk)},其中xssk,xsdk分别表示链路中的实物机、虚拟机,computexsdk(xsdk∈{1,2,3,4,5,6,7})表示虚拟机xsdk所在的计算节点,xsnk表示链路中的网络,networkxsnk(xsnk∈{1,2}))表示网络xsnk所在的网络节点,k表示虚实互联链路的总条数。

实施例中,在步骤s2,s3搭建目标仿真网络如图2所示,用集合表示为:包括网络节点{pc,vm1,vm2,vm3}与网络链路{(vm1,net1,network2,vm2,compute1),(vm1,compute1,net3,network1,vm3,compute3),(pc,net1,network2,vm1,compute1),(pc,net1,network2,vm2,compute1)},其中网络节点包括实物节点pc机与虚拟节点‐‐虚拟机(vm1,vm2,vm3),网络链路包括宿主机内的虚拟链路{(vm1,net1,network2,vm2,compute1)}、跨宿主机间的虚拟链路{(vm1,compute1,net3,network1,vm3,compute3)}、虚实互联链路{(pc,net1,network2,vm1,compute1),(pc,net1,network2,vm2,compute1)}。

s4:在控制节点controller上部署配置解析程序,在网络节点network上部署ip地址解析程序,在计算节点compute上部署端口解析程序,上述三个程序用于配置解析虚拟机的端口qvo_name与ip地址的对应关系,从而筛选与目标链路中的网络相同ip地址所对应的端口qvo_name;此外,在计算节点compute上部署数据采集程序,用于实时数据采集。

实施例中,在步骤s4中,配置解析程序、ip地址解析程序、端口解析程序与数据采集程序的部署图如图3所示,本试验所用openstack平台包含一个控制节点,两个网络节点和7个计算节点。其中,在控制节点controller上部署配置解析程序,在网络节点network1,network2上部署ip地址解析程序,在7个计算节点compute1~compute7上部署端口解析程序,上述三个程序用于配置解析虚拟机的端口qvo_name与ip地址的对应关系,从而筛选与目标链路中的网络相同ip地址所对应的端口qvo_name;此外,在计算节点compute1~compute7上部署数据采集程序,用于实时数据采集。

s5:基于步骤s4所部署的配置解析程序、ip地址解析程序、端口解析程序,选择所要采集的链路集合,并对其进行配置:对于宿主机内的虚拟链路(vnsi,vnni,networkvnni,vndi,computevni),先用所述配置解析程序、ip地址解析程序、端口解析程序识别虚拟机vnsi或vndi的目标端口qvo_namei,再用计算节点computevni上的数据采集程序对目标端口qvo_namei进行监听;对于跨宿主机的虚拟链路(vksj,computevksj,vknj,networkvknj,vkdj,computevkdj),先用所述配置解析程序、ip地址解析程序、端口解析程序识别虚拟机vksj或vkdj的目标端口qvo_namej,再用计算节点computevksj或computevkdj上的数据采集程序对目标端口qvo_namej进行监听;对于虚实互联链路(xssk,xsnk,networkxsnk,xsdk,computexsdk),先用所述配置解析程序、ip地址解析程序、端口解析程序识别虚拟机xsdk的目标端口qvo_namek,再用计算节点computexsdk上的数据采集程序对目标端口qvo_namek进行监听。

实施例中,在步骤s5中,选择所要采集的链路集合{(vm1,net1,network2,vm2,compute1),(vm1,compute1,net3,network1,vm3,compute3),(pc,net1,network2,vm2,compute1)},基于步骤s4所部署的配置解析程序、ip地址解析程序、端口解析程序,进行配置:对于宿主机内的虚拟链路{(vm1,net1,vm2,compute1)},识别虚拟机vm1的目标端口qvo_namei,用计算节点compute1上的数据采集程序对目标端口qvo_namei进行监听;对于跨宿主机的虚拟链路{(vm1,compute1,net3,network1,vm3,compute3)},识别虚拟机vm1的目标端口qvo_namej,用计算节点compute1上的数据采集程序对目标端口qvo_namej进行监听;对于虚实互联链路{(pc,net1,network2,vm2,compute1)},识别虚拟机vm2的目标端口qvo_namek,用计算节点compute1上的数据采集程序对目标端口qvo_namek进行监听;利用配置解析程序、ip地址解析程序、端口解析程序,识别目标端口qvo_name的流程如图4所示,具体步骤为:

(1)控制节点controller上的配置解析程序,处理参数请求,得到{'compute1':['vm1:net3=192.168.3.16;net1=192.168.1.19','vm2:net1=192.168.1.20']};

(2)计算节点compute1上的端口解析程序解析相应路径文件得到mac:qvo_name的对应关系:'vm1':{"fa:16:3e:b8:2a:2f":"qvo4d006656-f6","fa:16:3e:d5:0e:a0":"qvo06b35c55-a2"},'vm2':{'fa:16:3e:25:7a:6c':u'qvo9c12235a-59'};

(3)网络节点network1上的ip地址解析程序解析相应路径文件得到ip:mac的对应关系:{'net3':[{'192.168.3.11':'fa:16:3e:6e:cf:1a','192.168.3.16':'fa:16:3e:b8:2a:2f','192.168.3.17':'fa:16:3e:3b:27:ef','192.168.3.2':'fa:16:3e:9b:40:86'}]};网络节点network2上的ip地址解析程序解析相应路径文件得到ip:mac的对应关系:{'net1':[{'192.168.1.19':'fa:16:3e:d5:0e:a0','192.168.1.2':'fa:16:3e:ca:e0:6c','192.168.1.20':'fa:16:3e:25:7a:6c','192.168.1.21':'fa:16:3e:59:1a:48'}]};

(4)控制节点controller上的配置解析程序处理上述两组对应关系,根据相同的mac,得到ip:qvo_name的对应关系:{'192.168.1.19':'qvo06b35c55-a2','192.168.1.20':'qvo9c12235a-59','192.168.3.16':'qvo4d006656-f6'};

(5)最后筛选出与所选链路中的网络相同ip所对应的端口qvo_name:qvo_name1-1:qvo06b35c55-a2,qvo_name1-2:qvo4d006656-f6,qvo_name2:qvo9c12235a-59。

s6:对上述步骤s5中位于同一计算节点compute上的多个目标端口qvo_name设置端口镜像,用其上的数据采集程序对生成的镜像口veth0进行监听实现对多个目标端口qvo_name的监听。

实施例中,对上述步骤s5中位于同一计算节点compute1上的3个目标端口(qvo06b35c55-a2,qvo4d006656-f6,qvo9c12235a-59)设置端口镜像,用计算节点compute1上的数据采集程序对生成的镜像口veth0进行监听实现对上述3个目标端口的监听,验证从veth0采集到的数据包等于从pc,vm2,vm3发出的包和的2倍(ping包是双向的),为准确起见,以发送ping包为例,从pc,vm2,vm3分别向vm2,vm1,vm1发送10个ping包,结果从veth0采集到60个数据包,验证端口镜像设置成功。

s7:启动步骤s4所部署的数据采集程序,并实时对所采集到的数据进行存储。

实施例中,对步骤s7中启动数据采集程序,实时对所采集到的数据进行存储的流程如图5所示,具体步骤为:

(1)启动数据采集程序,使用监测进程对数据文件目录进行监听;

(2)对生成的数据文件,采用压缩算法进行压缩;

(3)将压缩文件发送给接收端服务器;

(4)服务端接收到压缩文件,先进行解压缩,再将数据文件解析入库。

实施例中,步骤s7中启动数据采集程序,对步骤s6中设置的镜像口veth0进行数据采集,服务端数据库中所存储的部分采集数据如图6所示,其中包括帧号、时间、源地址、目的地址、高层协议、数据包长度和包内信息概况等数据项。

上述实验结果表明,本发明提出的一种面向网络仿真的数据采集方法可实现对云平台中链路数据的采集,解决了基于openstack平台中链路数据的采集与实时存储。

上述具体实施方案仅用于说明本发明,而并非对本发明的限制,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1