CN108234187A - 一种面向数据报文转发的高逼真链路仿真方法 - Google Patents

一种面向数据报文转发的高逼真链路仿真方法 Download PDF

Info

Publication number
CN108234187A
CN108234187A CN201611197620.4A CN201611197620A CN108234187A CN 108234187 A CN108234187 A CN 108234187A CN 201611197620 A CN201611197620 A CN 201611197620A CN 108234187 A CN108234187 A CN 108234187A
Authority
CN
China
Prior art keywords
link
data message
delay
bandwidth
simulation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201611197620.4A
Other languages
English (en)
Other versions
CN108234187B (zh
Inventor
刘渊
张�浩
蒋敏
王晓锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiangnan University
Original Assignee
Jiangnan University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jiangnan University filed Critical Jiangnan University
Priority to CN201611197620.4A priority Critical patent/CN108234187B/zh
Publication of CN108234187A publication Critical patent/CN108234187A/zh
Application granted granted Critical
Publication of CN108234187B publication Critical patent/CN108234187B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/145Network analysis or design involving simulating, designing, planning or modelling of a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]

Abstract

本发明提供一种面向数据报文转发的高逼真链路仿真方法,基于开放云平台实现,应用于网络仿真平台。上述方法包含以下步骤:搭建OpenStack云平台;构建链路仿真接口程序;根据虚拟网络节点是否在同一计算节点上,分别构建宿主机内和跨宿主机间的链路仿真;针对宿主机内的链路延时仿真,调用系统内核模块仿真链路延时;针对跨宿主机间的链路延时仿真,差分补偿数据报文在物理链路中的传播延时;根据虚拟化技术是否有带宽限制策略,调用带宽限制接口或添加虚拟网卡队列来配置链路带宽;调用系统内核模块仿真链路丢包率。本发明能够在虚拟网络中构建灵活、透明、逼真的虚拟链路,支持链路性能参数的快速配置与自动化部署。

Description

一种面向数据报文转发的高逼真链路仿真方法
技术领域:
本发明适用于网络仿真技术领域,具体涉及一种面向数据报文转发的高逼真链路仿真方法。
背景技术:
相对于互联网上层应用和底层通信技术的蓬勃发展,互联网的基本架构并没有得到同步发展,任何一种新的网络架构、概念、服务在部署到真实的网络之前,都必须经过严格的测试与验证,构建大规模、真实的、可控的实验平台,不仅能够满足新应用、新需求,也是未来互联网研究的基础。
链路仿真为虚拟网络节点间建立通信链路,对网络模拟环境、网络仿真平台、实物测试床的构建具有重要意义,其在网络安全场景、卫星链路仿真、未来互联网实验平台中都有广泛的应用。
现有的链路仿真综合考虑链路中带宽、延时、丢包率三个重要性能参数的并不多,即使有考虑到链路物理特性,也未能考虑到链路仿真的通用性、逼真度问题。链路仿真应用于云平台中构建大规模网络仿真平台也并不普及,常见的链路仿真方法在网络模拟器中实现,尽管可以实现对链路性能参数的仿真,但所构建的模拟环境并不能支撑实际应用系统的部署运行。
网络仿真要再现目标网络的链路环境,并与外界进行实时的数据交互。一方面,仿真过程中需要使用真实的网络协议和应用程序;另一方面,数据在仿真网络内部的传输过程中需要通过链路模型。仿真系统内部的链路模型需要对带宽、延时、丢包率等物理特性进行控制,并为虚拟网络节点间通信构建灵活、透明、逼真的虚拟链路。所谓灵活,指的是链路的性能参数可任意灵活定制;所谓透明,指的是链路的性能与硬件资源的固有属性无关;所谓逼真,指的是仿真网络中的虚拟链路接近于真实网络的链路情况。
发明内容:
本发明提出一种面向数据报文转发的高逼真链路仿真方法,基于OpenStack开放云平台,针对虚拟网络节点通信所处的位置不同,分为宿主机内和跨宿主机间的链路仿真,对链路中带宽、延时、丢包率三个重要的性能参数进行仿真,支持链路的快速配置与自动化部署,可根据实际链路特性进行有针对性地设计。
本发明解决上述问题的技术方案如下:
S1:搭建OpenStack云平台,基于OpenvSwitch构建虚拟网络节点间通信的虚拟链路,计算机节点之间通过GRE隧道封装实现多租户之间的流量隔离,所构建的云平台由一个控制节点、一个网络节点和两个计算节点组成;
S2:构建虚拟网络拓扑,该虚拟网络拓扑包括虚拟网络节点、虚拟交换机、虚拟路由器,虚拟网络节点分为全虚拟化技术下的kvm虚拟机和操作系统级虚拟化下的docker容器;
S3:为了可根据链路特性进行有针对性地设计,提供链路仿真性能参数配置的接口,定义接口格式为:http://ip:port/v3.0/link_simulation,提交相关参数请求,支持链路特性的快速配置与自动化部署,接口响应POST请求,需提交的链路性能参数包括虚拟网络节点的实例名称、虚拟网络节点的MAC地址、链路带宽、链路延时、链路丢包率,该接口可通过curl发送请求配置命令:curl–d"instance_name=<instance_name>&mac=<mac>&bandwidth=<bandwidth>&delay=<delay>&loss=<loss>"http://ip:port/v3.0/link_simulation;
S4:针对宿主机内的链路仿真,对于处在同一计算节点上的虚拟网络节点通信,基于队列管理规则,在数据报文到达虚拟网卡前,使数据报文进入不同类别的队列中,基于不同的队列规则,完成对链路中带宽、延时、丢包率性能参数的仿真;
S5:针对宿主机内的链路仿真中kvm虚拟机间链路的带宽仿真,本发明利用kvm虚拟机所在的虚拟机管理程序提供了对虚拟网卡的带宽限制接口,实现对kvm虚拟机之间的虚拟链路的带宽限制,具体的带宽限制过程如下:
(1)与虚拟机管理程序建立连接;
(2)根据虚拟机实例名称,获取虚拟机所在的域,虚拟机实例名称可在OpenStack管理界面的控制台中查询到;
(3)在虚拟机的xml配置文件中,根据虚拟机的MAC地址,获取虚拟机的虚拟网卡名称;
(4)根据虚拟网卡名称和带宽配置参数,在虚拟机域中对虚拟机的虚拟网卡进行带宽限制,具体可选的带宽配置参数有inbound.average、inbound.burst、inbound.peak、outbound.average、outbound.burst、outbound.peak;
S6:针对宿主机内的链路仿真中docker容器间链路的带宽仿真,由于docker容器目前还没有实现对容器带宽限制的策略,本发明基于htb可分类队列,采用命令配置的方式来实现,具体的带宽限制过程如下:
(1)创建docker容器虚拟网卡的根队列,根队列规则为htb;
(2)建立虚拟网卡根队列的根分类并设置带宽,如果需要根据不同的流量分配不同的带宽,可以在根分类上构建多个子分类;
(3)如果有多个子分类,需添加具体的过滤规则,将数据报文过滤到不同的分类中;
(4)添加sfq公平队列到虚拟网卡的子分类中,为不同的流量分配合理的带宽;
S7:针对宿主机内的链路延时、丢包率仿真,本发明基于系统内核模块netem实现宿主机内的链路延时、丢包率仿真,netem内部存在一种可分类的队列机制,由两个数据报文队列组成:等待队列和嵌套队列,针对延时仿真,入队接口负责接收数据报文并给数据报文加上发送时间,将数据报文放置到等待队列中,定时器将数据报文从等待队列移动到嵌套队列中,针对丢包率仿真,以概率统计的方式计算出需要丢弃的数据报文,在数据报文进入队列前将其丢弃,具体的延时、丢包率仿真过程如下:
(1)查询虚拟网卡根队列的规则;
(2)如果链路上已经设置过延时、丢包率,则清空后再设置;
(3)如果虚拟网卡上已经有带宽限制规则,则不能直接在虚拟网卡的根队列上设置延时、丢包率,需要在根分类上添加规则;
(4)如果虚拟网卡上没有带宽限制规则,则利用tc调用netem模块直接在虚拟网卡上设置延时、丢包率;
S8:针对跨宿主机间的链路延时仿真,由于数据报文通过底层物理网络传输,中间经过一个隧道封装的过程,需要对经过底层物理链路的传播延时进行差分补偿,链路的总延时包含了传播延时和仿真延时,链路仿真在仿真延时的过程中,并不能仿真出物理链路的延时,因此,需要根据如下公式,计算出物理链路的传播延时,然后,根据期望的链路总延时,计算出链路仿真需要仿真的延迟时间;
T1为源计算节点发送数据报文的时刻,T2为目的计算节点接收到数据报文的时刻,D1为底层物理链路的传播延时,D2为数据报文在缓冲队列中的排队延时,假设D表示虚拟网络节点间通信的总延时,即数据报文从一个节点发送到另一个节点所经历的时间总和,那么D=D1+D2
具体的延时仿真过程如下:
(1)对虚拟网络节点经过源计算节点发出的数据报文进行过滤,利用iptables过 滤链路中指定的数据报文,将数据报文输入到NFQUEUE队列中,设置队列的序号,在FORWARD 链中添加规则;
(2)基于用户态对数据报文进行拦截,拦截指定序号的NFQUEUE队列来获取数据报文;
(3)重新构造数据报文,利用scapy解析数据报文,获取精确到13位的毫秒级时间戳,将当前时间戳字段添加到数据报文的数据部分,重新计算数据报文的长度,删除原始数据报文的校验和使得其能够重新计算;
(4)放行数据报文,使得其进入内核态继续传输;
(5)当数据报文到达目的计算节点时,根据(1)、(2)中所述的方法,对数据报文进行过滤和拦截;
(6)利用正则表达式匹配数据报文中的时间戳字段,重新构造数据报文,删除时间戳字段,重新计算数据报文的长度,删除原始数据报文的校验和使得其能够重新计算;
(7)获取当前精确到毫秒级的13位时间戳字段,根据(6)中所匹配的时间戳字段,计算数据报文在物理链路的传播延时D1
(8)根据链路仿真的总延时D,计算出实际的仿真延时D2,其可以根据S7中所述宿主机内的链路延时仿真实现,也可以在放行数据报文前,让数据报文等待延迟D2时间;
(9)放行数据报文,使得其进入内核态传输到目的虚拟网络节点;
S9:针对跨宿主机间的链路带宽、丢包率仿真,采用与S5、S6、S7中相同的仿真方法,此处不再赘述。
本发明的有益效果如下:
1、无论是宿主机内的链路仿真还是跨宿主机间的链路仿真,都可根据链路特性,对链路性能参数灵活配置,提高了链路仿真的灵活性。
2、链路仿真与硬件资源的固有属性无关,屏蔽了底层物理网络对链路造成的单一性,提高了链路仿真的透明性。
3、跨宿主机间的链路仿真针对每个数据报文都考虑了数据报文在物理链路的传播延时,提高了链路仿真的逼真度。
附图说明:
图1面向数据报文转发的高逼真链路仿真的设计流程图
图2链路仿真的总体架构图
图3链路仿真的实验拓扑图
图4基于队列管理规则的宿主机内链路性能参数仿真图
图5基于htb队列的带宽限制流程图
图6跨宿主机间的链路延时仿真流程图
图7跨宿主机间的数据报文重构图
图8链路带宽测试对比图
图9链路延时测试对比图
图10链路丢包率测试对比图
具体实施方式
为了更好的说明本发明的目的、具体步骤以及特点,下面结合附图对本发明作进一步详细的说明。
本方法的设计流程图如图1所示,技术方案如下:
S1:搭建OpenStack云平台,基于OpenvSwitch构建虚拟网络节点间通信的虚拟链路,计算机节点之间通过GRE隧道封装实现多租户之间的流量隔离,所构建的云平台由一个控制节点、一个网络节点和两个计算节点组成;
S2:构建虚拟网络拓扑,该虚拟网络拓扑包括虚拟网络节点、虚拟交换机、虚拟路由器,虚拟网络节点分为全虚拟化技术下的kvm虚拟机和操作系统级虚拟化下的docker容器;
S3:为了可根据链路特性进行有针对性地设计,提供链路仿真性能参数配置的接口,定义接口格式为:http://ip:port/v3.0/link_simulation,提交相关参数请求,支持链路特性的快速配置与自动化部署,接口响应POST请求,需提交的链路性能参数包括虚拟网络节点的实例名称、虚拟网络节点的MAC地址、链路带宽、链路延时、链路丢包率,该接口可通过curl发送请求配置命令:curl–d"instance_name=<instance_name>&mac=<mac>&bandwidth=<bandwidth>&delay=<delay>&loss=<loss>"http://ip:port/v3.0/link_simulation;
S4:针对宿主机内的链路仿真,对于处在同一计算节点上的虚拟网络节点通信,基于队列管理规则,在数据报文到达虚拟网卡前,使数据报文进入不同类别的队列中,基于不同的队列规则,完成对链路中带宽、延时、丢包率性能参数的仿真;
S5:针对宿主机内的链路仿真中kvm虚拟机间链路的带宽仿真,本发明利用kvm虚拟机所在的虚拟机管理程序提供了对虚拟网卡的带宽限制接口,实现对kvm虚拟机之间的虚拟链路的带宽限制,具体的带宽限制过程如下:
(1)与虚拟机管理程序建立连接;
(2)根据虚拟机实例名称,获取虚拟机所在的域,虚拟机实例名称可在OpenStack管理界面的控制台中查询到;
(3)在虚拟机的xml配置文件中,根据虚拟机的MAC地址,获取虚拟机的虚拟网卡名称;
(4)根据虚拟网卡名称和带宽配置参数,在虚拟机域中对虚拟机的虚拟网卡进行带宽限制,具体可选的带宽配置参数有inbound.average、inbound.burst、inbound.peak、outbound.average、outbound.burst、outbound.peak;
S6:针对宿主机内的链路仿真中docker容器间链路的带宽仿真,由于docker容器目前还没有实现对容器带宽限制的策略,本发明基于htb可分类队列,采用命令配置的方式来实现,具体的带宽限制过程如下:
(1)创建docker容器虚拟网卡的根队列,根队列规则为htb;
(2)建立虚拟网卡根队列的根分类并设置带宽,如果需要根据不同的流量分配不同的带宽,可以在根分类上构建多个子分类;
(3)如果有多个子分类,需添加具体的过滤规则,将数据报文过滤到不同的分类中;
(4)添加sfq公平队列到虚拟网卡的子分类中,为不同的流量分配合理的带宽;
S7:针对宿主机内的链路延时、丢包率仿真,本发明基于系统内核模块netem实现宿主机内的链路延时、丢包率仿真,netem内部存在一种可分类的队列机制,由两个数据报文队列组成:等待队列和嵌套队列,针对延时仿真,入队接口负责接收数据报文并给数据报文加上发送时间,将数据报文放置到等待队列中,定时器将数据报文从等待队列移动到嵌套队列中,针对丢包率仿真,以概率统计的方式计算出需要丢弃的数据报文,在数据报文进入队列前将其丢弃,具体的延时、丢包率仿真过程如下:
(1)查询虚拟网卡根队列的规则;
(2)如果链路上已经设置过延时、丢包率,则清空后再设置;
(3)如果虚拟网卡上已经有带宽限制规则,则不能直接在虚拟网卡的根队列上设置延时、丢包率,需要在根分类上添加规则;
(4)如果虚拟网卡上没有带宽限制规则,则利用tc调用netem模块直接在虚拟网卡上设置延时、丢包率;
S8:针对跨宿主机间的链路延时仿真,由于数据报文通过底层物理网络传输,中间经过一个隧道封装的过程,需要对经过底层物理链路的传播延时进行差分补偿,链路的总延时包含了传播延时和仿真延时,链路仿真在仿真延时的过程中,并不能仿真出物理链路的延时,因此,需要根据如下公式,计算出物理链路的传播延时,然后,根据期望的链路总延时,计算出链路仿真需要仿真的延迟时间;
T1为源计算节点发送数据报文的时刻,T2为目的计算节点接收到数据报文的时刻,D1为底层物理链路的传播延时,D2为数据报文在缓冲队列中的排队延时,假设D表示虚拟网络节点间通信的总延时,即数据报文从一个节点发送到另一个节点所经历的时间总和,那么D=D1+D2
具体的延时仿真过程如下:
(1)对虚拟网络节点经过源计算节点发出的数据报文进行过滤,利用iptables过 滤链路中指定的数据报文,将数据报文输入到NFQUEUE队列中,设置队列的序号,在FORWARD 链中添加规则;
(2)基于用户态对数据报文进行拦截,拦截指定序号的NFQUEUE队列来获取数据报文;
(3)重新构造数据报文,利用scapy解析数据报文,获取精确到13位的毫秒级时间戳,将当前时间戳字段添加到数据报文的数据部分,重新计算数据报文的长度,删除原始数据报文的校验和使得其能够重新计算;
(4)放行数据报文,使得其进入内核态继续传输;
(5)当数据报文到达目的计算节点时,根据(1)、(2)中所述的方法,对数据报文进行过滤和拦截;
(6)利用正则表达式匹配数据报文中的时间戳字段,重新构造数据报文,删除时间戳字段,重新计算数据报文的长度,删除原始数据报文的校验和使得其能够重新计算;
(7)获取当前精确到毫秒级的13位时间戳字段,根据(6)中所匹配的时间戳字段,计算数据报文在物理链路的传播延时D1
(8)根据链路仿真的总延时D,计算出实际的仿真延时D2,其可以根据S7中所述宿主机内的链路延时仿真实现,也可以在放行数据报文前,让数据报文等待延迟D2时间;
(9)放行数据报文,使得其进入内核态传输到目的虚拟网络节点;
S9:针对跨宿主机间的链路带宽、丢包率仿真,采用与S5、S6、S7中相同的仿真方法,此处不再赘述。
上述技术方案,在步骤S1中,本实例搭建的OpenStack云平台包括一个控制节点、一个网络节点和两个计算节点,如图2所示,虚拟网络节点间通信处在同一计算节点上,构建宿主机内的链路仿真,链路仿真程序运行在该计算节点内,虚拟网络节点间通信处在不同计算节点上,构建跨宿主机间的链路仿真,链路仿真程序分别运行在源计算节点和目的计算节点内,将网络节点的ml2_conf.ini文件中的mechanism_drivers设置为“openvswitch,l2population”,通过OpenvSwitch构建虚拟网络节点通信的虚拟链路。控制节点连接管理网的网卡IP地址为192.168.1.11,网络节点连接管理网和隧道网的网卡IP地址分别为192.168.1.21和10.0.1.21,计算节点1连接管理网和隧道网的网卡IP地址分别为192.168.1.31和10.0.1.31,计算节点2连接管理网和隧道网的网卡IP地址分别为192.168.1.32和10.0.1.32。
上述技术方案,在步骤S2中,构建如图3所示的网络拓扑,VM1、VM2处于计算节点1,VM3处于计算节点2,虚拟网络节点VM1、VM2、VM3的IP地址分别为192.168.30.24、192.168.20.29、192.168.20.31,虚拟路由器两个端口的IP地址分别为192.168.20.30、192.168.30.25。
上述技术方案,在步骤S3中,根据所定义的接口格式,宿主机内的链路性能参数配置程序运行在计算节点1,跨宿主机间的链路性能参数配置程序分为发送端和接收端分别运行在计算节点1和计算节点2。
上述技术方案,在步骤S4中,通过所构建的网络拓扑,以VM1和VM2之间通信的链路为例说明,对宿主机内的链路性能参数进行仿真,如图4所示,在数据报文到达虚拟网卡前,根据向接口传递的参数,使数据报文进入不同类别的队列:htb队列和netem队列,基于不同的队列规则,完成对链路中带宽、延时、丢包率性能参数的仿真。
上述技术方案,在步骤S5中,以链路带宽100KB/s为例,在OpenStack控制台中查看VM1、VM2的实例名称分别为instance-0000023d、instance-0000023f,分别执行virsh editinstance-0000023d、virsh edit instance-0000023f查看VM1、VM2的MAC地址,通过curl向步骤S3中的配置程序发送请求带宽设置命令,bandwidth设置为100,即可完成链路带宽配置。如果需要重新设置链路带宽,只需要重新提交一次带宽设置请求;如果需要将链路带宽恢复为初始状态,只需要将请求带宽参数设置为0提交即可。
上述技术方案,在步骤S6中,可以采用与步骤S5中相同的方法提交链路带宽设置请求,其基于htb队列规则完成带宽的配置,具体的执行流程如图5所示,以命令配置VM2带宽为100KB/s例,查看VM2在计算节点1所对应的虚拟网卡为tap10e1758b-f0,首先执行命令:tc qdisc add dev tap10e1758b-f0root handle 1:htb default 1r2q 0,为虚拟网卡设备添加根队列,然后,将100KB/s转为800000bps,执行命令:tc class add devtap10e1758b-f0parent 1:classid 1:1htb rate 800000bps ceil 800000bit burst1600b cburst 1600b,建立虚拟网卡根队列的根分类并设置带宽限制,rate是指总的带宽,ceil是指该分类可用的带宽,burst是指带宽为ceil下的突发字节数,cburst是指无带宽限制下的突然字节数。如果需要对不同的流量分配不同的带宽,可以创建多个子分类,添加具体的过滤规则将数据报文过滤到不同的子分类中,并添加公平队列确保不同的流量分配到合理的带宽。
上述技术方案,在步骤S7中,以链路延时10ms、丢包率10%为例,通过curl向步骤S3中的配置程序发送请求延时、丢包率设置命令,delay、loss分别设置为10,即可完成对链路延时、丢包率的配置。如果无需同时设置链路延时、丢包率,只需要将无需设置的参数置为0提交即可;如果需要将链路延时、丢包率恢复为初始状态,只需要将请求延时、丢包率参数同时设置为0提交即可。
上述技术方案,在步骤S8中,通过所构建的网络拓扑,以VM1和VM3之间通信的链路为例说明,对跨宿主机内的链路性能参数进行仿真,对于跨宿主机间的链路延时仿真,以链路延时10ms,VM1向VM3发送数据报文为例,通过curl向步骤S3中的配置程序发送请求延时设置命令,delay设置为10,即可完成对跨宿主机间的链路延时配置,其执行流程如图6所示:
(1)首先,将计算机节点1视为源计算节点,计算机节点2视为目的计算节点,对源 IP地址为192.168.30.24,目的IP地址为192.168.20.31的数据报文进行过滤,将数据报文 输入到NFQUEUE队列中,在FORWARD链中添加该条规则,其命令为:iptables-I FORWARD–s 192.168.30.24–d 192.168.20.31–j NF QUEUE–queue-num 1,所有包含对应源、目的IP地 址的数据报文都将被放置到序号为1的NFQUEUE队列中;
(2)然后,当数据报文从VM1到达计算节点1,事先已经开启监听的拦截程序会将序号为1的NFQUEUE队列上所有的数据报文拦截;
(3)其次,将拦截到的数据报文重新构造,如图7所示,利用scapy解析数据报文,将当前时间戳字段添加到数据报文的数据部分末尾,重新计算数据报文的长度、校验和;
(4)最后,计算节点1每操作完一个数据报文,就会放行数据报文,使得其进入内核态继续传输;
(5)当数据报文从计算节点1到达计算节点2时,数据报文经过GRE隧道的封装、拆封后,事先已经在计算机节点2开启监听的拦截程序使用上述同样的方法对数据报文进行拦截。然后,利用正则表达式匹配出数据报文中的时间戳字段,重新构造数据报文,该构造过程是上述构造过程的一个逆向过程,同样,如图7所示,删除时间戳字段,重新计算数据报文的长度、校验和。在计算节点2中获取当前时间戳字段,根据所匹配到的时间戳字段,计算出数据报文在物理链路的传播延时。根据链路所需仿真的总延时10ms,计算出每个从VM1中发出的数据报文的实际仿真延时,让数据报文等待实际仿真延迟时间后,计算机节点2就会放行数据报文,使得其进入内核态传输到VM3。
上述技术方案,在步骤S9中,采用与S5、S6、S7中相同的仿真方法,运行跨宿主机间的链路性能参数配置程序,提交带宽、丢包率配置参数请求即可,此处不再赘述。
实验过程中分别配置链路带宽为100KB/s、200KB/s、400KB/s、600KB/s、800KB/s、1000KB/s、1200KB/s、1400KB/s,链路延时为20ms、40ms、60ms、80ms、100ms、120ms、140ms、160ms,链路丢包率为10%、15%、20%、25%、30%、35%、40%、45%、50%进行仿真测试。宿主机内的链路仿真和跨宿主机间的链路仿真的实际性能对比如图8-图10所示,可以看出整体误差小于5%,能够准确地对云平台中虚拟网络节点间通信的虚拟链路进行真实链路的物理特性仿真。
本发明提出的面向数据报文转发的高逼真链路仿真方法,包括宿主机内的链路仿真和跨宿主机间的链路仿真,能够在虚拟网络中构建灵活、透明、逼真的虚拟链路,支撑大规模网络仿真平台的构建。针对宿主机内的链路仿真,基于队列管理规则仿真链路性能参数,提升链路仿真的性能。针对跨宿主机间的链路仿真,对数据报文经过底层物理链路的传播延时进行差分补偿,提高链路仿真的逼真度。该方法适用于真实的协议和应用程序,不局限于特定的仿真程序,链路的性能参数与物理链路无关,能够任意灵活定制,可根据实际链路进行有针对性地设计。
上面结合附图对本发明的具体实施方式做了详细说明,但是本发明并不局限于上述实施方式,对于本领域的技术人员来说,可以在不脱离本发明宗旨的前提下做出各种变化,所做的任何修改、替换、改进,均应在本发明的保护范围之内。

Claims (3)

1.一种面向数据报文转发的高逼真链路仿真方法,其特征在于,包括以下步骤:
S1:搭建OpenStack云平台,基于OpenvSwitch构建虚拟网络节点间通信的虚拟链路,计算机节点之间通过GRE隧道封装实现多租户之间的流量隔离,所构建的云平台由一个控制节点、一个网络节点和两个计算节点组成;
S2:构建虚拟网络拓扑,该虚拟网络拓扑包括虚拟网络节点、虚拟交换机、虚拟路由器,虚拟网络节点分为全虚拟化技术下的kvm虚拟机和操作系统级虚拟化下的docker容器;
S3:为了可根据链路特性进行有针对性地设计,提供链路仿真性能参数配置的接口,定义接口格式为:http://ip:port/v3.0/link_simulation,提交相关参数请求,支持链路特性的快速配置与自动化部署,接口响应POST请求,需提交的链路性能参数包括虚拟网络节点的实例名称、虚拟网络节点的MAC地址、链路带宽、链路延时、链路丢包率,该接口可通过curl发送请求配置命令:curl–d"instance_name=<instance_name>&mac=<mac>&bandwidth=<bandwidth>&delay=<delay>&loss=<loss>"http://ip:port/v3.0/link_simulation;
S4:针对宿主机内的链路仿真,对于处在同一计算节点上的虚拟网络节点通信,基于队列管理规则,在数据报文到达虚拟网卡前,使数据报文进入不同类别的队列中,完成对链路中带宽、延时、丢包率性能参数的仿真;
S5:针对宿主机内的链路仿真中kvm虚拟机间链路的带宽仿真,本发明利用kvm虚拟机所在的虚拟机管理程序提供了对虚拟网卡的带宽限制接口,实现对kvm虚拟机之间的虚拟链路的带宽限制,具体的带宽限制过程如下:
(1)与虚拟机管理程序建立连接;
(2)根据虚拟机实例名称,获取虚拟机所在的域,虚拟机实例名称可在OpenStack管理界面的控制台中查询到;
(3)在虚拟机的xml配置文件中,根据虚拟机的MAC地址,获取虚拟机的虚拟网卡名称;
(4)根据虚拟网卡名称和带宽配置参数,在虚拟机域中对虚拟机的虚拟网卡进行带宽限制,具体可选的带宽配置参数有inbound.average、inbound.burst、inbound.peak、outbound.average、outbound.burst、outbound.peak;
S6:针对宿主机内的链路仿真中docker容器间链路的带宽仿真,由于docker容器目前还没有实现对容器带宽限制的策略,本发明基于htb可分类队列,采用命令配置的方式来实现,具体的带宽限制过程如下:
(1)创建docker容器虚拟网卡的根队列,根队列规则为htb;
(2)建立虚拟网卡根队列的根分类并设置带宽,如果需要根据不同的流量分配不同的带宽,可以在根分类上构建多个子分类;
(3)如果有多个子分类,需添加具体的过滤规则,将数据报文过滤到不同的分类中;
(4)添加sfq公平队列到虚拟网卡的子分类中,为不同的流量分配合理的带宽;
S7:针对宿主机内的链路延时、丢包率仿真,本发明基于系统内核模块netem实现宿主机内的链路延时、丢包率仿真,netem内部存在一种可分类的队列机制,由两个数据报文队列组成:等待队列和嵌套队列,针对延时仿真,入队接口负责接收数据报文并给数据报文加上发送时间,将数据报文放置到等待队列中,定时器将数据报文从等待队列移动到嵌套队列中,针对丢包率仿真,以概率统计的方式计算出需要丢弃的数据报文,在数据报文进入队列前将其丢弃,具体的延时、丢包率仿真过程如下:
(1)查询虚拟网卡根队列的规则;
(2)如果链路上已经设置过延时、丢包率,则清空后再设置;
(3)如果虚拟网卡上已经有带宽限制规则,则不能直接在虚拟网卡的根队列上设置延时、丢包率,需要在其根分类上添加规则;
(4)如果虚拟网卡上没有带宽限制规则,则利用tc调用netem模块直接在虚拟网卡上设置延时、丢包率;
S8:针对跨宿主机间的链路延时仿真,由于数据报文通过底层物理网络传输,中间经过一个隧道封装的过程,需要对经过底层物理链路的传播延时进行差分补偿,链路的总延时包含了传播延时和仿真延时,链路仿真在仿真延时的过程中,并不能仿真出物理链路的延时,因此,需要根据如下公式,计算出物理链路的传播延时,然后,根据期望的链路总延时,计算出链路仿真需要仿真的延迟时间;
T1为源计算节点发送数据报文的时刻,T2为目的计算节点接收到数据报文的时刻,D1为底层物理链路的传播延时,D2为数据报文在缓冲队列中的排队延时,假设D表示虚拟网络节点间通信的总延时,即数据报文从一个节点发送到另一个节点所经历的时间总和,那么D=D1+D2
具体的延时仿真过程如下:
(1)对虚拟网络节点经过源计算节点发出的数据报文进行过滤,利用iptables过滤链路中指定的数据报文,将数据报文输入到NFQUEUE队列中,设置队列的序号,在FORWARD链中添加规则;
(2)基于用户态对数据报文进行拦截,拦截指定序号的NFQUEUE队列来获取数据报文;
(3)重新构造数据报文,利用scapy解析数据报文,获取精确到13位的毫秒级时间戳,将当前时间戳字段添加到数据报文的数据部分,重新计算数据报文的长度,删除原始数据报文的校验和使得其能够重新计算;
(4)放行数据报文,使得其进入内核态继续传输;
(5)当数据报文到达目的计算节点时,根据(1)、(2)中所述的方法,对数据报文进行过滤和拦截;
(6)利用正则表达式匹配数据报文中的时间戳字段,重新构造数据报文,删除时间戳字段,重新计算数据报文的长度,删除原始数据报文的校验和使得其能够重新计算;
(7)获取当前精确到毫秒级的13位时间戳字段,根据(6)中所匹配的时间戳字段,计算数据报文在物理链路的传播延时D1
(8)根据链路仿真的总延时D,计算出实际的仿真延时D2,其可以根据S7中所述宿主机内的链路延时仿真实现,也可以在放行数据报文前,让数据报文等待延迟D2时间;
(9)放行数据报文,使得其进入内核态传输到目的虚拟网络节点;
S9:针对跨宿主机间的链路带宽、丢包率仿真,采用与S5、S6、S7中相同的仿真方法,此处不再赘述。
2.根据权利要求1所述的方法,其特征在于:所述链路仿真方法对虚拟网络节点间链路带宽、延时、丢包率三个重要的性能参数进行仿真,包括宿主机内和跨宿主机间的链路仿真,支持链路性能参数的快速配置与自动部署。
3.根据权利要求1所述的方法,其特征在于:所述宿主机内的链路仿真方法,基于队列管理规则,提升了链路仿真的性能,所述跨宿主机间的链路仿真方法,对数据报文经过底层物理链路的传播延时进行差分补偿,实现链路特性与硬件资源的固有属性无关,提高了链路仿真的逼真度。
CN201611197620.4A 2016-12-22 2016-12-22 一种面向数据报文转发的高逼真链路仿真方法 Active CN108234187B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611197620.4A CN108234187B (zh) 2016-12-22 2016-12-22 一种面向数据报文转发的高逼真链路仿真方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611197620.4A CN108234187B (zh) 2016-12-22 2016-12-22 一种面向数据报文转发的高逼真链路仿真方法

Publications (2)

Publication Number Publication Date
CN108234187A true CN108234187A (zh) 2018-06-29
CN108234187B CN108234187B (zh) 2020-10-30

Family

ID=62656851

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611197620.4A Active CN108234187B (zh) 2016-12-22 2016-12-22 一种面向数据报文转发的高逼真链路仿真方法

Country Status (1)

Country Link
CN (1) CN108234187B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110635943A (zh) * 2019-09-02 2019-12-31 北京航空航天大学 基于Spark计算框架的网络传输过程的网络流量仿真系统
CN110912735A (zh) * 2019-11-13 2020-03-24 中国联合网络通信集团有限公司 一种数据包传输网络的仿真方法及装置
CN112073237A (zh) * 2020-09-03 2020-12-11 哈尔滨工业大学 一种云边架构中大规模目标网络构建方法
US20210288885A1 (en) * 2020-03-16 2021-09-16 Red Hat, Inc. Simulation and testing of infrastucture as a service scale using a container orchestration engine
CN113411232A (zh) * 2021-06-16 2021-09-17 深圳大学 一种区块链仿真测试系统及应用服务器
CN113489604A (zh) * 2021-06-24 2021-10-08 哈尔滨工业大学 网络仿真方法、装置、终端设备以及存储介质
CN115190032A (zh) * 2022-09-09 2022-10-14 南京信息工程大学 高适用轻量化全虚拟网络仿真、测试方法与嵌入式设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140365196A1 (en) * 2010-08-25 2014-12-11 Telefonaktiebolaget L M Ericsson (Publ) Infrastructure Model Generation System And Method
CN105227344A (zh) * 2015-08-21 2016-01-06 武汉烽火网络有限责任公司 基于OpenStack的软件定义网络模拟系统及方法
CN105763570A (zh) * 2016-04-26 2016-07-13 北京交通大学 一种基于虚拟化技术的分布式实时网络仿真系统
CN105827464A (zh) * 2016-05-16 2016-08-03 江南大学 可自动化部署的虚拟路由器构建方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140365196A1 (en) * 2010-08-25 2014-12-11 Telefonaktiebolaget L M Ericsson (Publ) Infrastructure Model Generation System And Method
CN105227344A (zh) * 2015-08-21 2016-01-06 武汉烽火网络有限责任公司 基于OpenStack的软件定义网络模拟系统及方法
CN105763570A (zh) * 2016-04-26 2016-07-13 北京交通大学 一种基于虚拟化技术的分布式实时网络仿真系统
CN105827464A (zh) * 2016-05-16 2016-08-03 江南大学 可自动化部署的虚拟路由器构建方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王霄飞: "基于OpenStack构建私有云计算平台", 《中国优秀硕士学位论文全文数据库(信息科技辑)》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110635943A (zh) * 2019-09-02 2019-12-31 北京航空航天大学 基于Spark计算框架的网络传输过程的网络流量仿真系统
CN110635943B (zh) * 2019-09-02 2020-11-06 北京航空航天大学 基于Spark计算框架的网络传输过程的网络流量仿真系统
CN110912735A (zh) * 2019-11-13 2020-03-24 中国联合网络通信集团有限公司 一种数据包传输网络的仿真方法及装置
US20210288885A1 (en) * 2020-03-16 2021-09-16 Red Hat, Inc. Simulation and testing of infrastucture as a service scale using a container orchestration engine
CN112073237A (zh) * 2020-09-03 2020-12-11 哈尔滨工业大学 一种云边架构中大规模目标网络构建方法
CN112073237B (zh) * 2020-09-03 2022-04-19 哈尔滨工业大学 一种云边架构中大规模目标网络构建方法
CN113411232A (zh) * 2021-06-16 2021-09-17 深圳大学 一种区块链仿真测试系统及应用服务器
CN113489604A (zh) * 2021-06-24 2021-10-08 哈尔滨工业大学 网络仿真方法、装置、终端设备以及存储介质
CN115190032A (zh) * 2022-09-09 2022-10-14 南京信息工程大学 高适用轻量化全虚拟网络仿真、测试方法与嵌入式设备

Also Published As

Publication number Publication date
CN108234187B (zh) 2020-10-30

Similar Documents

Publication Publication Date Title
CN108234187A (zh) 一种面向数据报文转发的高逼真链路仿真方法
CN106301911B (zh) 基于sdn的空间信息网络半实物集中式仿真平台及其实现方法
Ahrenholz et al. CORE: A real-time network emulator
CN106375142B (zh) 应用程序的测试方法和装置
CN103051737B (zh) 提供融合互联架构上的网络能力的方法和系统
CN101645813B (zh) 分布式半实物网络仿真系统及其半实物接口控制方法
CN103825761B (zh) 一种延迟可容忍网络的星上路由器仿真方法
CN101383822A (zh) 航空电信网路由器虚拟机
CN105871487B (zh) 一种面向卫星移动通信的系统级仿真演示验证系统
CA2275450A1 (en) Network manager providing advanced interconnection capability
CN107396396A (zh) 支持多源多径的数据传输管理方法
Herrscher et al. A dynamic network scenario emulation tool
CN105357039B (zh) 一种时延容忍网络的仿真方法及装置
CN108123818A (zh) 一种虚实网络灵活可扩展融合的仿真方法
CN105393508A (zh) 软件定义网络的服务质量控制方法及设备
CN107592216A (zh) 一种支持多场景实验隔离的虚实网络融合仿真方法
CN108737141A (zh) 一种卫星链路间歇性与延时仿真方法
CN105978817A (zh) 用于传输数据的方法、存储器和网络适配器
CN110266368A (zh) 基于云平台的天地一体化信息网络仿真方法
CN109039709A (zh) 一种基于虚拟化的移动无线网络仿真与实验平台
CN101378573B (zh) 一种测试接入网关性能的系统和方法
Abdullah et al. Evaluating and Comparing the Performance of Using Multiple Controllers in Software Defined Networks.
US7526420B2 (en) Method and system for virtual injection of network application codes into network simulation
Beshay et al. On the fidelity of single-machine network emulation in linux
CN109905280A (zh) 一种面向移动卫星网络的仿真方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant