一种基于多节点流量回放的网络背景生成系统及方法
技术领域
本发明涉及方案选取领域,尤其涉及一种基于多节点流量回放的网络背景生成系统及方法。
背景技术
在网络场景构建过程中,流量回放作为常用方法,是一种利用实验平台生成具备主机间交互能力的网络以及节点,并将预先捕获的数据包文件经过清洗后注入节点,并按照数据包文件原始顺序对其进行重新回放,实现模拟特定网络场景流量交互的技术。目前,流量回放方法按照回放方式主要分为以下两类:一种是基于数学模型生成特定的流量,并在主机之间或主机内的多个网卡之间进行回放;另一种是捕获真实流量并重新回放的方法。对于基于模型生成流量并回放的方案,只单纯考虑流量的基本特征,如数据包大小,持续时间等,并且产生单一类型的网络流量,无法满足流量的自相似性和长相关性特征。此外,对于现有的基于真实流量进行回放的方法,虽然能够保证流量的自相似性和长相关性特征,但是,其回放场景多是在单个主机的多个网卡或两台主机之间,无法满足靶场环境背景流量模拟的规模。
发明内容
为了克服上述现有技术中的不足,本发明提一种基于多节点流量回放的网络背景生成系统,包括:多节点流量回放调度模块,流量文件预处理模块,回放网络生成模块以及多节点流量回放模块;
多节点流量回放调度模块用于在回放过程中对总体回放过程进行全局调度管理,通过对流量文件预处理模块,回放网络生成模块和多节点流量回放模块相互调用,共同完成多节点网络流量回放工作;
流量文件预处理模块对流量文件进行分割生成数据流文件,并对数据流文件进行统计分析,生成统计信息;生成的统计信息为回放网络生成模块提供输入信息;
回放网络生成模块用于利用流量文件预处理模块的统计信息,经过回放网络映射,输出构建回放网络拓扑所需的配置文件;根据配置文件生成回放网络及流量分配关系文件,并将数据流文件分发给虚拟节点;
多节点流量回放模块用于在生成的回放网络中,对齐回放节点时间,构造数据包和发送数据包,完成多节点回放任务。
优选地,多节点流量回放调度模块还用于读取用户控制命令,解析命令,获取回放程序开始时间;当用户输入时间早于当前时刻,回放程序默认完成所有初始化工作后立即开始;
流量文件预处理模块还用于读取流量文件,并对流量文件进行数据预处理,包括流量清洗,流量分割和信息统计;
回放网络生成模块还用于利用流量文件预处理模块生成文件,将数据流统计信息文件作为输入参数,经过映射算法后,得到回放网络拓扑文件,流量分配关系文件;完成回放网络拓扑构建和节点数据流文件下发以及IP映射文件的创建等回放网络生成任务;完成回放节点的初始化工作;
多节点流量回放模块还用于当回放节点接收回放过程开始的指令时,每台机器开始自身回放过程;每台机器中对数据包内容进行重构,放入缓冲区中根据相对时间间隔等待发送。
优选地,流量文件包含如下信息:时间戳timestamp,协议类型protocol,源IP地址src_ip,源端口号src_port,目的IP地址dst_ip,目的端口号dst_port和数据包内容信息content;根据四元组信息:
(src_ip,dst_ip,src_port,dst_port)
作为分割规则,对流量文件进行分割操作,得到多个分割的数据流文件;遍历每个数据流文件,统计每个数据流文件大小flow_size,数据包数目packet_number,每个数据包的时间戳timestamp;利用数据流文件中第一个数据包时间戳first_timestamp,最后一个时间戳last_timestamp,计算该数据流文件的持续时间constant_time;利用每个数据包的时间戳,计算每个数据包与第一个数据包间的时间间隔packet_interval。
优选地,回放网络生成模块的回放网络映射方式为:进行回放节点的映射工作以及进行网络拓扑的映射工作;
进行回放节点的映射工作过程中,预设数据流文件数据包数目,数据流文件大小,数据流文件持续时间,数据包的时间间隔,并将回放速率作为是否映射成功的判断条件;
预设数据流文件的持续时间为T,数据包大小为S,平均速率为V,则
V=S/T(byte/s)
根据每个流文件的信息,计算出每个数据流文件的平均速率,放入集合Vf={Vf1,Vf2,Vf3,…};
预先测试不同资源类型的节点的标准速率,在集合V={V1,V2,V3,…};将Vf中的数据与V中的数据进行比较;两者的差为Vr,第i类资源类型的节点中的低速队列为V_lowi,中速队列为V_midi,匹配库队列为V_allowi则
其中,
是低速阈值,
是映射阈值;遍历完成后,得到不同资源类型的低速和中速队列以及已经分配好的数据流文件和资源类型的对应关系;
进行网络拓扑的映射工作过程中,对V_lowi和V_midi中的数据流文件进行合并操作;从V_lowi和V_midi中随机选取两个数据流文件m和n,计算Vmn;
Vmn=(Sm+Sn)/(Tm+Tn)
其中,Vi_com是合并速率阈值;
对于情况一,继续计算平均数据包时间间隔
和平均流大小
当两者均满足PS_com时,将该阈值统称为合并准确性阈值,将m,n放入V_allow
i;
若不满足PS_com,则重新分别读取V_lowi和V_midi中的其它数据流文件进行比较;
第二次遍历结束后,剩余的每种资源类型两种队列中的数据流文件都是无法相互合并的文件;
进行第三次遍历,此时,V_lowi和V_midi中的每个队列中多个数据流文件需要合并;
第三次遍历过程中,对于同一队列中的数据流文件,依据该类型节点中的空闲磁盘大小取相应数目的数据流文件,并对时间间隔进行均值化操作,当时间间隔满足阈值VTi_com时,该阈值称为合并时间间隔阈值,m,n…放入V_allowi;
不满足VTi_com,取出平均时间间隔较小的数据流文件,继续比较;
当数据流文件数目减少为1个时,不用比较,直接将其分配给该节点;
经过上述三轮遍历过程后,输出流量分配关系文件,为如下形式:
节点名称node_name,数据流文件名列表flow_list,节点资源类型node_type;
完成节点的映射工作后,映射回放网络拓扑;
回放网络拓扑映射过程分为两部分,子网中节点的分配过程以及子网间的连通过程;
回放网络拓扑中包含多个节点,每个节点都包含数据流文件;
将节点的分配问题转换为节点映射过程中的后两个遍历过程;
统计属于同一会话过程中两个方向的数据流文件在不同子网中的数目,任何两个子网间的数目满足某个阈值时,该阈值统称为连通阈值,将两个子网间进行连通;否则,子网间没有通路;经过连通过程后,回放网络拓扑映射过程结束;
输出两个文件,分别为子网拓扑文件和整体网络拓扑文件;
其中,子网拓扑文件中的内容项为如下形式:
(节点名称列表node_name_list,子网名称subnet_name)。
整体网络拓扑文件中的内容项为如下形式:
(子网名称subnet_name,连通子网列表subnet_attach_list)。
优选地,回放网络生成模块还用于生成回放网络拓扑,回放网络拓扑文件以及流量分配关系文件;
回放网络拓扑文件包括两个子文件,分别是整体网络拓扑文件和子网拓扑文件;整体网络文件包含多个子网和子网间路由器的拓扑结构,子网拓扑文件包含的是每个子网中的节点部署数目信息;流量分配关系文件的内容包含了每个数据流文件与某个子网中的节点间对应关系;
解析整体网络拓扑文件,根据整体网络拓扑文件内容,启动回放网络生成程序,生成相应数目的网络和子网,并生成路由器连通多个回放网络;继续解析子网结构文件,启动回放节点生成程序,在上一步创建的网络中生成相应数目的回放节点;
解析流量分配关系文件,根据节点名称项将对应的数据流文件发送相应的节点;
收集所有节点的IP地址,生成节点IP地址列表,并使用流量分配关系文件,针对每个数据流文件,生成IP地址与原始IP地址的IP映射表文件。
优选地,回放网络生成模块中的回放节点的初始化工作包括:对所有节点发送统一对时指令,节点接收命令后执行时间对齐程序;调度程序获取每个数据流文件第一个数据包的时间戳,比较时间早晚,对于最早的时间戳,以最早的时间戳作为回放的起始时间点,并将它发送至所有节点,所有数据包以该起始时间计算数据流文件中数据包的相对时间戳,并将原始时间戳替换;根据节点中数据流文件的数目启动相应数目的线程,并将部分数据包读取发送缓冲区中,等待调度程序的启动命令。
优选地,多节点流量回放模块还用于当系统时间没有到达回放开始时间时,程序休眠并再次询问;当系统时间到达回放时间时,调度程序发送回放开始指令;所有节点接收指令后,启动计时器;每个线程中循环获取当前计时器时间并与数据流统计信息文件中的数据包相对时间戳进行比较,当计时器时间满足发送数据包中的相对时间戳时,将原始数据包重新替换源IP地址和目的IP地址,源IP为回放节点IP地址,目的IP为IP映射文件中指定的目的IP地址;将原始数据包作为数据包内容,重新计算校验和后发送到目的节点,并将数据包信息和数据包发送结果记录到日志文件中返回给用户;当缓冲区中的数据包数目少于缓冲区容量的一半时,继续读取后续的数据包填充发送缓冲区;当数据包文件内容都被读取后,程序跳出循环,同时将回放结果统计信息写入日志文件。
一种基于多节点流量回放的网络背景生成方法,方法包括:
步骤一,多节点流量回放调度模块在回放过程中对总体回放过程进行全局调度管理,通过对流量文件预处理模块,回放网络生成模块和多节点流量回放模块相互调用,共同完成多节点网络流量回放工作;
步骤二,流量文件预处理模块对流量文件进行分割生成数据流文件,并对数据流文件进行统计分析,生成统计信息;生成的统计信息为回放网络生成模块提供输入信息;
步骤三,利回放网络生成模块利用流量文件预处理模块的统计信息,经过回放网络映射,输出构建回放网络拓扑所需的配置文件;根据配置文件生成回放网络及流量分配关系文件,并将数据流文件分发给虚拟节点;
步骤四,多节点流量回放模块在生成的回放网络中,对齐回放节点时间,构造数据包和发送数据包,完成多节点回放任务。
优选地,步骤一还包括:读取用户控制命令,解析命令,获取回放程序开始时间;当用户输入时间早于当前时刻,回放程序默认完成所有初始化工作后立即开始;
步骤二还包括:读取流量文件,并对流量文件进行数据预处理,包括流量清洗,流量分割和信息统计;
步骤三还包括:利用流量文件预处理模块生成文件,将数据流统计信息文件作为输入参数,经过映射算法后,得到回放网络拓扑文件,流量分配关系文件;完成回放网络拓扑构建和节点数据流文件下发以及IP映射文件的创建等回放网络生成任务;完成回放节点的初始化工作;
步骤四还包括:当回放节点接收回放过程开始的指令时,每台机器开始自身回放过程;每台机器中对数据包内容进行重构,放入缓冲区中根据相对时间间隔等待发送。
优选地,步骤三中的回放网络映射方式为:进行回放节点的映射工作以及进行网络拓扑的映射工作;
进行回放节点的映射工作过程中,预设数据流文件数据包数目,数据流文件大小,数据流文件持续时间,数据包的时间间隔,并将回放速率作为是否映射成功的判断条件;
预设数据流文件的持续时间为T,数据包大小为S,平均速率为V,则
V=S/T(byte/s)
根据每个流文件的信息,计算出每个数据流文件的平均速率,放入集合Vf={Vf1,Vf2,Vf3,…};
预先测试不同资源类型的节点的标准速率,在集合V={V1,V2,V3,…};将Vf中的数据与V中的数据进行比较;两者的差为Vr,第i类资源类型的节点中的低速队列为V_lowi,中速队列为V_midi,匹配库队列为V_allowi则
其中,
是低速阈值,
是映射阈值;遍历完成后,得到不同资源类型的低速和中速队列以及已经分配好的数据流文件和资源类型的对应关系;
进行网络拓扑的映射工作过程中,对V_lowi和V_midi中的数据流文件进行合并操作;从V_lowi和V_midi中随机选取两个数据流文件m和n,计算Vmn;
Vmn=(Sm+Sn)/(Tm+Tn)
其中,Vi_com是合并速率阈值;
对于情况一,继续计算平均数据包时间间隔
和平均流大小
当两者均满足PS_com时,将该阈值统称为合并准确性阈值,将m,n放入V_allow
i;
若不满足PS_com,则重新分别读取V_lowi和V_midi中的其它数据流文件进行比较;
第二次遍历结束后,剩余的每种资源类型两种队列中的数据流文件都是无法相互合并的文件;
进行第三次遍历,此时,V_lowi和V_midi中的每个队列中多个数据流文件需要合并;
第三次遍历过程中,对于同一队列中的数据流文件,依据该类型节点中的空闲磁盘大小取相应数目的数据流文件,并对时间间隔进行均值化操作,当时间间隔满足阈值VTi_com时,该阈值称为合并时间间隔阈值,m,n…放入V_allowi;
不满足VTi_com,取出平均时间间隔较小的数据流文件,继续比较;
当数据流文件数目减少为1个时,不用比较,直接将其分配给该节点;
经过上述三轮遍历过程后,输出流量分配关系文件,为如下形式:
节点名称node_name,数据流文件名列表flow_list,节点资源类型node_type;
完成节点的映射工作后,映射回放网络拓扑;
回放网络拓扑映射过程分为两部分,子网中节点的分配过程以及子网间的连通过程;
回放网络拓扑中包含多个节点,每个节点都包含数据流文件;
将节点的分配问题转换为节点映射过程中的后两个遍历过程;
统计属于同一会话过程中两个方向的数据流文件在不同子网中的数目,任何两个子网间的数目满足某个阈值时,该阈值统称为连通阈值,将两个子网间进行连通;否则,子网间没有通路;经过连通过程后,回放网络拓扑映射过程结束;
输出两个文件,分别为子网拓扑文件和整体网络拓扑文件;
其中,子网拓扑文件中的内容项为如下形式:
(节点名称列表node_name_list,子网名称subnet_name)。
整体网络拓扑文件中的内容项为如下形式:
(子网名称subnet_name,连通子网列表subnet_attach_list)。
优选地,步骤三还包括:生成回放网络拓扑,回放网络拓扑文件以及流量分配关系文件;
回放网络拓扑文件包括两个子文件,分别是整体网络拓扑文件和子网拓扑文件;整体网络文件包含多个子网和子网间路由器的拓扑结构,子网拓扑文件包含的是每个子网中的节点部署数目信息;流量分配关系文件的内容包含了每个数据流文件与某个子网中的节点间对应关系;
解析整体网络拓扑文件,根据整体网络拓扑文件内容,启动回放网络生成程序,生成相应数目的网络和子网,并生成路由器连通多个回放网络;继续解析子网结构文件,启动回放节点生成程序,在上一步创建的网络中生成相应数目的回放节点;
解析流量分配关系文件,根据节点名称项将对应的数据流文件发送相应的节点;
收集所有节点的IP地址,生成节点IP地址列表,并使用流量分配关系文件,针对每个数据流文件,生成IP地址与原始IP地址的IP映射表文件;
步骤三中的回放节点的初始化工作包括:对所有节点发送统一对时指令,节点接收命令后执行时间对齐程序;调度程序获取每个数据流文件第一个数据包的时间戳,比较时间早晚,对于最早的时间戳,以最早的时间戳作为回放的起始时间点,并将它发送至所有节点,所有数据包以该起始时间计算数据流文件中数据包的相对时间戳,并将原始时间戳替换;根据节点中数据流文件的数目启动相应数目的线程,并将部分数据包读取发送缓冲区中,等待调度程序的启动命令;
步骤四还包括:当系统时间没有到达回放开始时间时,程序休眠并再次询问;当系统时间到达回放时间时,调度程序发送回放开始指令;所有节点接收指令后,启动计时器;每个线程中循环获取当前计时器时间并与数据流统计信息文件中的数据包相对时间戳进行比较,当计时器时间满足发送数据包中的相对时间戳时,将原始数据包重新替换源IP地址和目的IP地址,源IP为回放节点IP地址,目的IP为IP映射文件中指定的目的IP地址;将原始数据包作为数据包内容,重新计算校验和后发送到目的节点,并将数据包信息和数据包发送结果记录到日志文件中返回给用户;当缓冲区中的数据包数目少于缓冲区容量的一半时,继续读取后续的数据包填充发送缓冲区;当数据包文件内容都被读取后,程序跳出循环,同时将回放结果统计信息写入日志文件。
从以上技术方案可以看出,本发明具有以下优点:
本发明能够在用户只上传流量文件和少量参数的情况下,通过分析流量文件,获取一系列统计信息。并经过回放网络映射模型处理后,得到回放网络拓扑配置文件,从而生成回放网络拓扑和回放节点,并在该拓扑中进行多节点的流量回放过程。本发明针对不同领域可在不同场景中应用,如在网络安全领域下,可用于网络攻防实验环境构建;在性能测试领域,可用于网络硬件设备性能测试和网络软件的压力测试;在人类动力学研究领域,可用于群体用户网络行为研究等等。
附图说明
为了更清楚地说明本发明的技术方案,下面将对描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为基于多节点流量回放的网络背景生成系统示意图;
图2为基于多节点流量回放的网络背景生成方法流程图;
图3为基于多节点流量回放的网络背景生成方法实施例流程图。
具体实施方式
本发明提供一种基于融合思想的实体多准则综合排序方法,如图1所示,包括:多节点流量回放调度模块1,流量文件预处理模块2,回放网络生成模块3以及多节点流量回放模块4;多节点流量回放调度模块1用于在回放过程中对总体回放过程进行全局调度管理,通过对流量文件预处理模块2,回放网络生成模块3和多节点流量回放模块4相互调用,共同完成多节点网络流量回放工作;
流量文件预处理模块2对流量文件进行分割生成数据流文件,并对数据流文件进行统计分析,生成统计信息;生成的统计信息为回放网络生成模块提供输入信息;
回放网络生成模块3用于利用流量文件预处理模块的统计信息,经过回放网络映射,输出构建回放网络拓扑所需的配置文件;根据配置文件生成回放网络及流量分配关系文件,并将数据流文件分发给虚拟节点;
多节点流量回放模块4用于在生成的回放网络中,对齐回放节点时间,构造数据包和发送数据包,完成多节点回放任务。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将运用具体的实施例及附图,对本发明保护的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本专利中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本专利保护的范围。
本发明提供的实施例中,多节点流量回放调度模块1还用于读取用户控制命令,解析命令,获取回放程序开始时间;当用户输入时间早于当前时刻,回放程序默认完成所有初始化工作后立即开始;
流量文件预处理模块2还用于读取流量文件,并对流量文件进行数据预处理,包括流量清洗,流量分割和信息统计;将数据流统计信息文件作为输入参数,经过映射算法后,得到回放网络拓扑文件,流量分配关系文件;
回放网络生成模块还用于利用流量文件预处理模块生成文件,将数据流统计信息文件作为输入参数,经过映射算法后,得到回放网络拓扑文件,流量分配关系文件;完成回放网络拓扑构建和节点数据流文件下发以及IP映射文件的创建等回放网络生成任务;完成回放节点的初始化工作;
多节点流量回放模块还用于当回放节点接收回放过程开始的指令时,每台机器开始自身回放过程;每台机器中对数据包内容进行重构,放入缓冲区中根据相对时间间隔等待发送。
本发明提供的实施例中,流量文件包含如下信息:时间戳timestamp,协议类型protocol,源IP地址src_ip,源端口号src_port,目的IP地址dst_ip,目的端口号dst_port和数据包内容信息content;根据四元组信息:
(src_ip,dst_ip,src_port,dst_port)
作为分割规则,对流量文件进行分割操作,得到多个分割的数据流文件;遍历每个数据流文件,统计每个数据流文件大小flow_size,数据包数目packet_number,每个数据包的时间戳timestamp;利用数据流文件中第一个数据包时间戳first_timestamp,最后一个时间戳last_timestamp,计算该数据流文件的持续时间constant_time;利用每个数据包的时间戳,计算每个数据包与第一个数据包间的时间间隔packet_interval。
回放网络生成模块3的回放网络映射方式为:进行回放节点的映射工作以及进行网络拓扑的映射工作;进行回放节点的映射工作过程中,预设数据流文件数据包数目,数据流文件大小,数据流文件持续时间,数据包的时间间隔,并将回放速率作为是否映射成功的判断条件;
预设数据流文件的持续时间为T,数据包大小为S,平均速率为V,则
V=S/T(byte/s)
根据每个流文件的信息,计算出每个数据流文件的平均速率,放入集合Vf={Vf1,Vf2,Vf3,…};
预先测试不同资源类型的节点的标准速率,在集合V={V1,V2,V3,…};将Vf中的数据与V中的数据进行比较;两者的差为Vr,第i类资源类型的节点中的低速队列为V_lowi,中速队列为V_midi,匹配库队列为V_allowi则
其中,
是低速阈值,
是映射阈值;遍历完成后,得到不同资源类型的低速和中速队列以及已经分配好的数据流文件和资源类型的对应关系;
进行网络拓扑的映射工作过程中,对V_lowi和V_midi中的数据流文件进行合并操作;从V_lowi和V_midi中随机选取两个数据流文件m和n,计算Vmn;
Vmn=(Sm+Sn)/(Tm+Tn)
其中,Vi_com是合并速率阈值;
对于情况一,继续计算平均数据包时间间隔
和平均流大小
当两者均满足PS_com时,将该阈值统称为合并准确性阈值,将m,n放入V_allow
i;
若不满足PS_com,则重新分别读取V_lowi和V_midi中的其它数据流文件进行比较;
第二次遍历结束后,剩余的每种资源类型两种队列中的数据流文件都是无法相互合并的文件;
进行第三次遍历,此时,V_lowi和V_midi中的每个队列中多个数据流文件需要合并;
第三次遍历过程中,对于同一队列中的数据流文件,依据该类型节点中的空闲磁盘大小取相应数目的数据流文件,并对时间间隔进行均值化操作,当时间间隔满足阈值VTi_com时,该阈值称为合并时间间隔阈值,m,n…放入V_allowi;不满足VTi_com,取出平均时间间隔较小的数据流文件,继续比较;当数据流文件数目减少为1个时,不用比较,直接将其分配给该节点;经过上述三轮遍历过程后,输出流量分配关系文件,为如下形式:节点名称node_name,数据流文件名列表flow_list,节点资源类型node_type;
完成节点的映射工作后,映射回放网络拓扑;回放网络拓扑映射过程分为两部分,子网中节点的分配过程以及子网间的连通过程;回放网络拓扑中包含多个节点,每个节点都包含数据流文件;将节点的分配问题转换为节点映射过程中的后两个遍历过程;统计属于同一会话过程中两个方向的数据流文件在不同子网中的数目,任何两个子网间的数目满足某个阈值时,该阈值统称为连通阈值,将两个子网间进行连通;否则,子网间没有通路;经过连通过程后,回放网络拓扑映射过程结束;
输出两个文件,分别为子网拓扑文件和整体网络拓扑文件;其中,子网拓扑文件中的内容项为如下形式:
(节点名称列表node_name_list,子网名称subnet_name)。
整体网络拓扑文件中的内容项为如下形式:
(子网名称subnet_name,连通子网列表subnet_attach_list)。
本发明提供的实施例中,回放网络生成模块3还用于生成回放网络拓扑,回放网络拓扑文件以及流量分配关系文件;回放网络拓扑文件包括两个子文件,分别是整体网络拓扑文件和子网拓扑文件;整体网络文件包含多个子网和子网间路由器的拓扑结构,子网拓扑文件包含的是每个子网中的节点部署数目信息;流量分配关系文件的内容包含了每个数据流文件与某个子网中的节点间对应关系;解析整体网络拓扑文件,根据整体网络拓扑文件内容,启动回放网络生成程序,生成相应数目的网络和子网,并生成路由器连通多个回放网络;继续解析子网结构文件,启动回放节点生成程序,在上一步创建的网络中生成相应数目的回放节点;解析流量分配关系文件,根据节点名称项将对应的数据流文件发送相应的节点;收集所有节点的IP地址,生成节点IP地址列表,并使用流量分配关系文件,针对每个数据流文件,生成IP地址与原始IP地址的IP映射表文件。
本发明提供的实施例中,回放网络生成模块3中的回放节点的初始化工作包括:对所有节点发送统一对时指令,节点接收命令后执行时间对齐程序;调度程序获取每个数据流文件第一个数据包的时间戳,比较时间早晚,对于最早的时间戳,以最早的时间戳作为回放的起始时间点,并将它发送至所有节点,所有数据包以该起始时间计算数据流文件中数据包的相对时间戳,并将原始时间戳替换;根据节点中数据流文件的数目启动相应数目的线程,并将部分数据包读取发送缓冲区中,等待调度程序的启动命令。
多节点流量回放模块4还用于当系统时间没有到达回放开始时间时,程序休眠并再次询问;当系统时间到达回放时间时,调度程序发送回放开始指令;所有节点接收指令后,启动计时器;每个线程中循环获取当前计时器时间并与数据流统计信息文件中的数据包相对时间戳进行比较,当计时器时间满足发送数据包中的相对时间戳时,将原始数据包重新替换源IP地址和目的IP地址,源IP为回放节点IP地址,目的IP为IP映射文件中指定的目的IP地址;将原始数据包作为数据包内容,重新计算校验和后发送到目的节点,并将数据包信息和数据包发送结果记录到日志文件中返回给用户;当缓冲区中的数据包数目少于缓冲区容量的一半时,继续读取后续的数据包填充发送缓冲区;当数据包文件内容都被读取后,程序跳出循环,同时将回放结果统计信息写入日志文件。
为了进一步说明本发明涉及的技术方案下面以具体的实施例进行说明:
某网络靶场实验利用Openstack云计算平台需要使用50G流量,生成多节点网络拓扑,并进行使用流量进行背景流量模拟。
步骤一,用户输入控制命令参数,格式为<command,start_time>,并且将50G流量,名称为replay_traffic,通过ftp方式上传到流量回放调度服务器中。
步骤二,流量回放调度服务器中的调度程序从上传路径读取replay_traffic,调用第三方数据包解析程序pkt2flow使用四元组(src_ip,dst_ip,src_port,dst_port)对其流量文件进行分流,分割数据流文件命名格式是四元组信息,如10.245.14.3_56.142.32.3_2345_1342.pcap,将每个数据流文件放入另一路径中,程序继续遍历每个流文件,以如下信息作为文件内容项:(flow_name,packet_number,flow_size,constant_time,first_timestamp,last_timestamp)生成数据流统计信息文件。
步骤三,调度程序调用回放网络映射算法,以数据流统计信息文件作为输入,经过映射算法后,程序输出回放网络拓扑文件,流量分配关系文件。
步骤四,调度程序调用程序读取回放网络拓扑文件,利用生成虚拟网络脚本文件,在Openstack云平台中,自动化创建回放网络和路由器。创建成功后,继续调用程序读取流量分配关系文件,同样利用虚拟节点生成脚本文件,在指定网络中创建特定数目的回放节点。读取所有生成节点IP地址信息和数据流统计信息文件,生成IP地址映射文件。节点创建完成后,调度程序读取数据流统计信息文件和IP地址映射文件,将数据流文件和相应的IP地址映射规则下发给回放节点。
步骤五,流量回放调度程序首先完成系统时间校准工作,调度程序读取数据流统计信息文件,获取第一个数据包的时间戳,通过比较得出最早时间戳,利用该时间戳修改每个数据流文件数据包的时间戳为相对时间戳,如某数据包中的时间戳是16:24:23.234143,timestamp是16:23:21.012297,则相对时间戳为0:1:2.221846。最后,根据回放节点中数据流文件的数目启动相应数目的线程thread1,thread2…,且按照时间戳顺序将数据流文件中的数据包读入数据包发送缓冲区中,完成回放节点的初始化工作。
步骤六,当节点系统时间到达流量回放的开始时间时,回放程序启动计时器。每个线程循环读取计时器,当计时器时间满足相对时间戳时,将原始数据包重新替换源IP地址和目的IP地址,其中,源IP为回放节点IP地址,目的IP为IP映射文件中指定的目的IP地址。将原始数据包作为数据包内容,重新计算校验和后发送到目的节点,并将数据包信息和数据包发送结果记录到日志文件中。当所有数据流文件都发送完成时,程序跳出循环并发送回放结束指示信息。
步骤七,调度程序循环监听所有节点的回放状态,当所有节点都完成回放操作时,调度程序将返回“用户流量回放过程成功结束”提示信息,跳出循环程序。当程序回放过程中出现问题时,调度程序暂停当前机器的回放过程,并将错误信息返回给用户,跳出循环程序。
本发明还提供一种基于多节点流量回放的网络背景生成方法,如图2和图3所示,方法包括:
步骤一,多节点流量回放调度模块在回放过程中对总体回放过程进行全局调度管理,通过对流量文件预处理模块,回放网络生成模块和多节点流量回放模块相互调用,共同完成多节点网络流量回放工作;
步骤二,流量文件预处理模块对流量文件进行分割生成数据流文件,并对数据流文件进行统计分析,生成统计信息;生成的统计信息为回放网络生成模块提供输入信息;
步骤三,利回放网络生成模块利用流量文件预处理模块的统计信息,经过回放网络映射,输出构建回放网络拓扑所需的配置文件;根据配置文件生成回放网络及流量分配关系文件,并将数据流文件分发给虚拟节点;
步骤四,多节点流量回放模块在生成的回放网络中,对齐回放节点时间,构造数据包和发送数据包,完成多节点回放任务。
本发明提供的方法中,回放调度程序读取用户控制命令,解析命令,获取回放程序开始时间。当用户输入时间早于当前时刻,回放程序默认完成所有初始化工作后立即开始。
回放调度程序读取流量文件,并对流量文件进行数据预处理,包括流量清洗,流量分割和信息统计。
将数据流统计信息文件作为输入参数,经过映射算法后,得到回放网络拓扑文件,流量分配关系文件。
利用步骤三生成的三个文件,完成回放网络拓扑构建和节点数据流文件下发以及IP映射文件的创建等回放网络生成任务。
完成回放节点的初始化工作。
当回放节点接收回放过程开始的指令时,每台机器开始自身回放过程。每台机器中对数据包内容进行重构,放入缓冲区中根据相对时间间隔等待发送。
流量文件预处理方法为,数据包通常包含如下信息:时间戳timestamp,协议类型protocol,源IP地址src_ip,源端口号src_port,目的IP地址dst_ip,目的端口号dst_port和数据包内容信息content。根据四元组信息:
(src_ip,dst_ip,src_port,dst_port)
作为分割规则,对流量文件进行分割操作,得到多个分割的数据流文件。然后,遍历每个数据流文件,统计每个数据流文件大小flow_size,数据包数目packet_number,每个数据包的时间戳timestamp;利用数据流文件中第一个数据包时间戳first_timestamp,最后一个时间戳last_timestamp,计算该数据流文件的持续时间constant_time;利用每个数据包的时间戳,计算每个数据包与第一个数据包间的时间间隔packet_interval。最后,对于每个数据流文件,以如下形式:
(flow_name,flow_size,packet_number,first_timestamp,last_timestamp,constant_time)
将信息写入数据流统计信息库中。另外,将数据流文件中的第一个时间戳first_timestamp和时间间隔packet_interval写入数据流时间戳统计信息库中。
回放网络映射方法为在真实场景中捕获了大量流量的情况下,若要构建相应的网络场景,最好的办法便是一比一复现真实网络场景。但是由于计算资源限制,以及真实网络拓扑的未知性,无法完成复现真实网络场景的目标。因此,本方法从回放过程中数据流文件对节点资源的使用率角度出发,将回放网络映射问题转化为计算资源分配问题。
回放网络映射过程分为两个阶段,第一阶段完成回放节点的映射工作,第二阶段完成网络拓扑的映射工作。
回放节点的映射过程需要数据流文件数据包数目,数据流文件大小,数据流文件持续时间,数据包的时间间隔等多个参数共同参与。由于本专利在回放过程首要因素是回放规模,故将回放速率作为是否映射成功的首要影响因素。
假设数据流文件的持续时间为T,数据包大小为S,平均速率为V,则
V=S/T(byte/s)
此时,根据每个流文件的信息,计算出每个数据流文件的平均速率,放入集合Vf={Vf1,Vf2,Vf3,…}。另外,需要预先测试不同资源类型的节点的标准速率,在集合V={V1,V2,V3,…}。此时,将Vf中的数据与V中的数据进行比较。假设两者的差为Vr,第i类资源类型的节点中的低速队列为V_low
i,中速队列为V_mid
i,匹配库队列为V_allow
i则若
其中,
是低速阈值,
是映射阈值。遍历完成后,可以得到不同资源类型的低速和中速队列以及已经分配好的数据流文件和资源类型的对应关系。
第二次遍历过程中,需要对V_lowi和V_midi中的数据流文件进行合并操作。首先,从上述两种队列中随机选取两个数据流文件m和n,计算Vmn
Vmn=(Sm+Sn)/(Tm+Tn)
其中,Vi_com是合并速率阈值。对于情况一,需要继续计算平均数据包时间间隔
和平均流大小
当两者均满足PS_com时,将该阈值统称为合并准确性阈值,将m,n放入V_allow
i;若不满足PS_com,则重新分别读取V_low
i和V_mid
i中的其它数据流文件进行比较。第二次遍历结束后,剩余的每种资源类型两种队列中的数据流文件都是无法相互合并的文件。
进行第三次遍历,此时,V_lowi和V_midi中的每个队列中多个数据流文件需要合并。该情况下,不考虑回放速率,而是重点考虑回放准确性。本次遍历过程中,对于同一队列中的数据流文件,依据该类型节点中的空闲磁盘大小取相应数目的数据流文件,并对时间间隔进行均值化操作,当时间间隔满足阈值VTi_com时,该阈值称为合并时间间隔阈值,m,n…放入V_allowi。不满足VTi_com,取出平均时间间隔较小的数据流文件,继续比较。当数据流文件数目减少为1个时,不用比较,直接将其分配给该节点。
经过上述3轮遍历过程后,输出流量分配关系文件,为如下形式:
(节点名称node_name,数据流文件名列表flow_list,节点资源类型node_type)
完成节点的映射工作后,还需要映射回放网络拓扑。回放网络拓扑映射过程分为两部分,子网中节点的分配过程以及子网间的连通过程。回放网络拓扑中包含多个节点,而每个节点都包含数据流文件。那么,可以将节点的分配问题转换为节点映射过程中的后两个遍历过程。因此,回放网络拓扑的映射过程主要关注点在子网间的连通问题。
首先,统计属于同一会话过程中两个方向的数据流文件在不同子网中的数目,任何两个子网间的数目满足某个阈值时,该阈值统称为连通阈值,将两个子网间进行连通。否则,子网间没有通路。经过连通过程后,回放网络拓扑映射过程结束。输出两个文件,分别为子网拓扑文件和整体网络拓扑文件。其中,子网拓扑文件中的内容项为如下形式:
(节点名称列表node_name_list,子网名称subnet_name)。
整体网络拓扑文件中的内容项为如下形式:
(子网名称subnet_name,连通子网列表subnet_attach_list)
回放网络拓扑生成方式需要两种文件作为输入,分别是回放网络拓扑文件,流量分配关系文件两种,下面对两种文件中的内容进行详细说明。
回放网络拓扑文件包括两个子文件,分别是整体网络拓扑文件和子网拓扑文件。整体网络文件包含多个子网和子网间路由器的拓扑结构,而子网拓扑文件包含的是每个子网中的节点部署数目信息。流量分配关系文件的内容包含了每个数据流文件与某个子网中的节点间对应关系。
首先,解析整体网络拓扑文件,根据整体网络拓扑文件内容,启动回放网络生成程序,生成相应数目的网络和子网,并生成路由器连通多个回放网络。继续解析子网结构文件,启动回放节点生成程序,在上一步创建的网络中生成相应数目的回放节点。接着,解析流量分配关系文件,根据节点名称项将对应的数据流文件发送相应的节点。最后,收集所有节点的IP地址,生成节点IP地址列表,并使用流量分配关系文件,针对每个数据流文件,生成IP地址与原始IP地址的IP映射表文件。文件内容项使用如下形式:
(节点名称node_name,原始IP地址列表original_IP_list,IP地址列表virtual_IP_list)
流量回放节点初始化方式是对所有节点发送统一对时指令,节点接收命令后执行时间对齐程序。接下来,调度程序获取每个数据流文件第一个数据包的时间戳,比较时间早晚,对于最早的时间戳,以它作为回放的起始时间点,并将它发送至所有节点,所有数据包以该起始时间计算数据流文件中数据包的相对时间戳,并将原始时间戳替换。最后,根据节点中数据流文件的数目启动相应数目的线程,并将部分数据包读取发送缓冲区中,等待调度程序的启动命令。
多节点流量回放方式是当系统时间没有到达回放开始时间时,程序休眠并再次询问;当系统时间到达回放时间时,调度程序发送回放开始指令。所有节点接收指令后,启动计时器。每个线程中循环获取当前计时器时间并与数据流统计信息文件中的数据包相对时间戳进行比较,当计时器时间满足发送数据包中的相对时间戳时,将原始数据包重新替换源IP地址和目的IP地址,其中,源IP为回放节点IP地址,目的IP为IP映射文件中指定的目的IP地址。将原始数据包作为数据包内容,重新计算校验和后发送到目的节点,并将数据包信息和数据包发送结果记录到日志文件中返回给用户。当缓冲区中的数据包数目少于缓冲区容量的一半时,继续读取后续的数据包填充发送缓冲区。当数据包文件内容都被读取后,程序跳出循环,同时将回放结果统计信息写入日志文件。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。