[发明专利]一种面向数据报文转发的高逼真链路仿真方法有效
申请号: | 201611197620.4 | 申请日: | 2016-12-22 |
公开(公告)号: | CN108234187B | 公开(公告)日: | 2020-10-30 |
发明(设计)人: | 刘渊;张浩;蒋敏;王晓锋 | 申请(专利权)人: | 江南大学 |
主分类号: | H04L12/24 | 分类号: | H04L12/24;H04L12/46 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 214122 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明提供一种面向数据报文转发的高逼真链路仿真方法,基于开放云平台实现,应用于网络仿真平台。上述方法包含以下步骤:搭建OpenStack云平台;构建链路仿真接口程序;根据虚拟网络节点是否在同一计算节点上,分别构建宿主机内和跨宿主机间的链路仿真;针对宿主机内的链路延时仿真,调用系统内核模块仿真链路延时;针对跨宿主机间的链路延时仿真,差分补偿数据报文在物理链路中的传播延时;根据虚拟化技术是否有带宽限制策略,调用带宽限制接口或添加虚拟网卡队列来配置链路带宽;调用系统内核模块仿真链路丢包率。本发明能够在虚拟网络中构建灵活、透明、逼真的虚拟链路,支持链路性能参数的快速配置与自动化部署。 | ||
搜索关键词: | 一种 面向 数据 报文 转发 逼真 仿真 方法 | ||
【主权项】:
1.一种面向数据报文转发的高逼真链路仿真方法,其特征在于,包括以下步骤:S1:搭建OpenStack云平台,基于OpenvSwitch构建虚拟网络节点间通信的虚拟链路,计算机节点之间通过GRE隧道封装实现多租户之间的流量隔离,所构建的云平台由一个控制节点、一个网络节点和两个计算节点组成;S2:构建虚拟网络拓扑,该虚拟网络拓扑包括虚拟网络节点、虚拟交换机、虚拟路由器,虚拟网络节点分为全虚拟化技术下的kvm虚拟机和操作系统级虚拟化下的docker容器;S3:为了可根据链路特性进行有针对性地设计,提供链路仿真性能参数配置的接口,定义接口格式为:http://ip:port/v3.0/link_simulation,提交相关参数请求,支持链路特性的快速配置与自动化部署,接口响应POST请求,需提交的链路性能参数包括虚拟网络节点的实例名称、虚拟网络节点的MAC地址、链路带宽、链路延时、链路丢包率,该接口可通过curl发送请求配置命令:curl–d"instance_name=&mac=&bandwidth=&delay=&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中相同的仿真方法,此处不再赘述。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于江南大学,未经江南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201611197620.4/,转载请声明来源钻瓜专利网。
- 上一篇:一种确定业务链策略的方法及设备
- 下一篇:一种业务平台资源调度处理方法及装置
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置