基于容器技术的大规模网络实时仿真方法

文档序号:30064824发布日期:2022-05-18 00:39阅读:316来源:国知局
基于容器技术的大规模网络实时仿真方法

1.本发明涉及通信技术领域,更进一步涉及一种大规模网络传输仿真方法,可用于模拟大规模网络的数据传输。


背景技术:

2.随着通信技术的迅速发展,通信网络结构的复杂性、拓扑规模在不断提高,新的网络算法、架构、各层协议以及上层业务系统在正式部署于实际平台之前必须要经过严格的一致性、健壮性、互操作性、安全性等方面的测试。
3.西安电子科技大学在申请号为cn201610364291.1专利文献中提出一种基于改进的opnet-hla的大规模网络仿真方法,用于解决现有opnet-hla的大规模网络仿真方法不能实现对网络性能参数进行分布式仿真的技术问题。当前,opnet是主流的通信网络仿真软件,但是如果使用opnet在单台物理机上对大规模网络进行仿真,则需要面临效率低和可靠性差的问题,分布式仿真技术虽然可以解决这个问题,但是又进一步增加了网络体系结构设计的复杂度;同时,由于opnet采用离散事件驱动的模拟机理,不能实时地获取当前网络状态。容器技术做为一种实现轻量级的操作系统虚拟化解决方案,可以实时地模拟网络节点间数据交互,对系统资源利用率很高,单台宿主机可以部署上千级别的容器,同时单个容器的部署在毫秒级以及秒级之间,扩展性强,在节约成本的同时也可以满足构建大规模网络的需求。
4.中国科学院信息工程研究所在申请号为201911241576.6的其专利文献中提出了一种基于容器技术的虚拟网络数据通信交互方法。该方法对虚拟网络的容器节点创建网络命名空间,虚拟出容器节点的网卡并配置网络命名空间,以实现容器节点间的网络通信;通过对虚拟网络的边界网卡进行处理,将边界节点与主机网卡进行绑定,实现不同主机的容器节点间以及不同类型的节点间的数据连通性。但是,该方法由于对同一台主机内的容器节点使用传统tcp/ip传输协议进行通信,因而存在大量数据拷贝问题,特别是在大规模高并发场景下会降低数据传输速率以及网络吞吐量,无法满足数据高速传输的要求。


技术实现要素:

5.本发明的目的在于克服上述现有技术的不足,提出一种基于容器技术的大规模网络传输仿真方法,以避免大量数据拷贝,提高数据传输速率以及网络吞吐量,满足数据高速传输的要求。
6.本发明的技术方案是这样实现的:
7.一、本发明中用到的名词概念。
8.数据单元,是指一种用于保存高速传输数据的结构体,其在共享内存中创建,保存仿真参数信息、自定义数据帧头部信息以及真实业务数据。
9.数据单元描述符,用于描述数据单元的结构体,在容器间真正传输的是数据单元描述符,以此来达到模拟数据在容器间高速传输的目的。
10.机器级数据管理队列,是指在共享内存中创建用于宿主机供应和回收数据单元的队列;
11.容器级数据管理队列,是指在共享内存中创建用于容器节点产生和销毁数据单元的队列。
12.本发明的技术思路是:通过采用了共享内存的通信方式,使容器节点之间传输的消息都保存在共享内存中,保证所有容器都可以访问,避免数据拷贝;通过在数据单元中设置包含仿真参数信息、自定义数据帧头部信息以及真实传输数据,并引入该数据单元做为消息载体,采用两级数据管理队列管理数据单元,降低容器节点申请数据单元的冲突率;通过使用交换机制,使每个容器级数据管理队列都有一条备用容器级数据管理队列,提高申请数据单元的效率;通过加入了无锁化机制,提高数据在容器间传输的速率。
13.二.实现方案
14.根据上述思路,本发明的实现方案包括如下:
15.(1)在宿主机上创建机器级数据管理队列,以统一管理宿主机上所有的数据单元,并初始化容器节点仿真参数;
16.(2)不同容器节点,即源容器节点、转发容器节点和目的容器节点都创建属于自己的容器级数据管理队列,每个容器级数据管理队列包括容器级数据发送管理队列和容器级数据回收管理队列;
17.(3)各源容器节点在创建完成容器级数据管理队列后,源容器节点开始向目的容器节点发送数据,从源容器节点内的容器级数据发送管理队列中申请获取数据单元,并判断源容器节点的容器级数据发送管理队列是否为空:若是,则执行(4),否则,执行(8);
18.(4)将源容器节点的容器级数据发送管理队列与源容器节点的容器级备用数据发送管理队列进行交换,源容器节点从容器级备用数据发送管理队列中申请获取数据单元;
19.(5)判断源容器节点的容器级备用数据发送管理队列是否为空:若是,则执行(6),否则,执行(8);
20.(6)源容器节点通知机器级数据管理队列对源容器节点的容器级数据发送管理队列供应数据单元;
21.(7)机器级数据管理队列为源容器节点的容器级数据发送管理队列供应数据单元;
22.(8)源容器节点从容器级数据发送管理队列中获取并填充数据单元,即填充仿真参数信息、自定义数据帧头部信息和实际传输的数据;
23.(9)源容器节点或转发容器节点根据路由协议生成的转发表,确定到达目的容器节点的下一跳转发容器节点,选择与其相连的输出逻辑队列;
24.(10)判断输出逻辑队列是否已满,若是,则执行(13),否则,执行(11);
25.(11)将数据单元放入到输出逻辑队列,使用原子操作将代表输出逻辑队列长度的data_count参数加1;
26.(12)转发容器节点从输出逻辑队列中取出数据单元,使用原子操作将代表输出逻辑队列长度的data_count参数减1,并判断转发容器节点是否为目的容器节点:若是,则执行(13),否则,返回(9);
27.(13)判断容器级数据回收管理队列是否已满,若是,则执行(14),否则,执行(17);
28.(14)交换容器级数据回收管理队列和容器级备用数据回收管理队列,使用容器级备用数据回收管理队列回收数据单元;
29.(15)判断容器级备用数据回收管理队列是否已满,若是,则执行(17),否则,执行(16);
30.(16)通知机器级数据管理队列回收容器级数据回收管理队列内的数据单元;
31.(17)将数据单元回收到容器级数据回收管理队列中;
32.(18)当前数据单元传输流程结束,循环处理接下一个数据单元。
33.本发明与现有技术相比具有如下优点:
34.第一,本发明使用基于数据单元的分组传递机制,在程序运行初始化阶段数据单元就会创建完毕,仿真过程无需使用动态内存分配、回收和拷贝机制;容器间实际传递的是数据单元描述符,不会涉及到数据单元内数据的拷贝,提升了分组的传输和处理速度。
35.第二,本发明采用了容器级的数据单元申请和释放机制,每个容器节点都维护自己的容器级数据管理队列和容器级备用数据管理队列,能支持多个容器节点同时执行数据单元的产生和销毁,提升了仿真系统的并行处理能力,为实时仿真奠定了基础。
36.第三,本发明采用机器级的数据单元补充和回收机制,可使容器所在的宿主机维护机器级数据管理队列调节和平衡容器节点间由于业务流传输导致的数据单元资源失衡问题,保障了仿真系统的长时间高速仿真。
37.第四,本发明在容器间采用改进的循环队列机制模拟链路上的数据帧传输。当链路负载较重时,高效循环队列结构设计能够支持单原子语句的入队和出队操作,有效避免了频繁调用系统函数带来的处理速度瓶颈,克服了大规模高并发场景下采用加锁机制造成的锁冲突、死锁以及性能瓶颈问题,极大提升链路的传输速率和系统的并行处理能力。当链路负载较低时,仍然可以利用信号量实现出队操作的阻塞,有效避免了无效出队操作带来的处理器时间开销,保证整个系统仿真处理器资源的有效分配。
附图说明
38.图1是本发明的实现流程图。
39.图2是本发明中的数据传输示意图。
具体实施方式
40.下面结合附图,对本发明的实例作进一步的详细描述。
41.参照图1,对本实例的实施步骤如下。
42.步骤1.在宿主机上创建机器级数据管理队列。
43.所述宿主机,是指创建容器节点的物理机。
44.所述容器节点,是指一个视图隔离、资源可限制、拥有独立文件系统的进程集合,在本实例中分为源容器节点、转发容器节点和目的容器节点,其中源容器节点是指产生数据的容器节点,目的容器节点是指数据最终到达的容器节点,转发容器节点是指数据到达目的容器节点前中间转发数据的容器节点。
45.所述机器级数据管理队列,是指在共享内存中创建用于宿主机供应和回收数据单元的队列。
46.所述数据单元,是指一种用于保存高速传输数据的结构体,在共享内存中创建,保存仿真参数信息、自定义数据帧头部信息以及真实业务数据。
47.本步骤的具体实现如下:
48.1.1)在物理机中创建源容器节点、转发容器节点和目的容器节点,并在物理机共享内存中创建用于宿主机供应和回收数据单元的队列;
49.1.2)初始化容器节点仿真参数:
50.容器节点仿真参数包括容器节点编号、容器级数据管理队列长度、发包间隔以及链路传输速率,本实例设但不限于容器节点编号为node1、node2、node3

noden,容器级数据管理队列长度为64,发包间隔为10ms,链路传输速率1gbps。
51.步骤2.所有容器节点开启,创建容器级数据管理队列。
52.所述容器级数据管理队列,是指在共享内存中创建用于容器节点获取和释放数据单元的队列。
53.所述容器级数据发送管理队列,是指在共享内存中创建用于容器节点获取数据单元的容器级数据管理队列。
54.所述容器级数据回收管理队列,是指在共享内存中创建用于容器节点回收释放数据单元的容器级数据管理队列。
55.本步骤的具体实现如下:
56.2.1)在物理机共享内存中创建用于容器节点申请和释放数据单元的队列,包括容器级数据发送管理队列和容器级数据回收管理队列;
57.2.2)在物理机共享内存中创建用于容器节点备用的容器级数据管理队列,包括容器级备用数据发送管理队列和容器级备用数据回收管理队列;
58.2.3)机器级数据管理队列给所有容器节点的容器级数据发送管理队列和容器级备用数据管理队列填充满数据单元。
59.步骤3.源容器节点进行数据传送。
60.参照图2,本步骤的具体实现如下:
61.3.1)源容器节点在创建完成容器级数据管理队列后开始向目的容器节点发送数据,在此过程中会通过转发容器节点进行数据转发,容器节点之间数据传输均通过输出逻辑队列完成;
62.3.2)源容器节点从其容器级数据发送管理队列中申请获取数据单元;
63.3.3)判断源容器节点的容器级数据发送管理队列是否还有数据单元:若有,则执行步骤5,否则,执行步骤4。
64.步骤4.对源容器节点的容器级备用数据发送管理队列进行判断,机器级数据管理队列为源容器节点的容器级数据发送管理队列补充数据单元。
65.4.1)源容器节点使用交换机制,从容器级备用数据发送管理队列中申请获取数据单元,实现将源容器节点的容器级数据发送管理队列与源容器节点的容器级备用数据发送管理队列交换;
66.4.2)判断源容器节点的容器级备用数据发送管理队列是否为空:若是,则执行步骤4.3),否则,执行步骤5。
67.4.3)源容器节点通过信号量方式通知机器级数据管理队列,并将自身的容器节点
编号发送给机器级数据管理队列,该信号量是指,在多线程环境下用来保证两个或多个关键代码段不被并发调用的措施;
68.4.4)机器级数据管理队列通过源容器节点发送的容器节点编号找到源容器节点的容器级数据管理队列,并为其供应数据单元。
69.步骤5.源容器节点从容器级数据发送管理队列中获取数据单元并填充数据单元。
70.5.1)源容器节点从容器级数据发送管理队列中获取数据单元,即获取数据单元描述符指向数据单元在共享内存中的实际地址,该数据单元描述符,是指描述数据单元的结构体,其在共享内存中创建,以保存数据单元在共享内存中的地址;
71.5.2)源容器节点根据数据单元描述符找到数据单元,并填充仿真参数信息、自定义数据帧头部信息和实际传输的数据,该仿真参数信息,包括数据传输开始时间、源容器节点编号、目的容器节点编号等信息。
72.步骤6.容器节点生成转发表,选择输出逻辑队列。
73.所述输出逻辑队列,是指在共享内存中创建的用于容器节点间缓存数据单元的队列。
74.本步骤的具体实现如下:
75.6.1)源容器节点或转发容器节点通过查询路由协议生成的转发表,确定到达目的容器节点下一跳转发容器节点;
76.6.2)源容器节点或转发容器节点根据确定的下一跳转发容器节点,选择与其相连的输出逻辑队列;
77.6.3)判断输出逻辑队列是否已满,若是,则执行步骤8,否则,执行步骤7。
78.步骤7.数据单元的放入与获取。
79.7.1)源容器节点将数据单元放入到输出逻辑队列中,即将数据单元描述符缓存到输出逻辑队列,同时使用操作系统提供的原子操作函数将代表输出逻辑队列长度的data_count参数加1,该原子操作,是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会切换到另一个线程:
80.7.2)源容器节点通过信号量的方式通知转发容器节点从输出逻辑队列中取出数据单元;
81.7.3)转发容器节点从输出逻辑队列中取出数据单元,同时使用操作系统提供的原子操作函数将代表输出逻辑队列长度的data_count参数减1;
82.7.4)转发容器节点查找数据单元中仿真参数信息包含的目的容器节点编号,并与自身的容器节点编号进行比较判断自身是否为目的容器节点:若是,则执行步骤8,否则,返回步骤6。
83.步骤8,对容器级数据回收管理队列和备用数据回收管理队列进行判断。
84.8.1)判断容器级数据回收管理队列是否已满,若是,则执行步骤8.2),否则,将数据单元回收到容器级数据回收管理队列中;
85.8.2)将容器级数据回收管理队列和容器级备用数据回收管理队列进行交换,即使用交换机制,源容器节点或目的容器节点使用容器级备用数据回收管理队列回收数据单元;
86.8.3)判断容器级备用数据回收管理队列是否已满,若是,则将数据单元回收到容
器级数据回收管理队列中,否则,执行步骤9。
87.步骤9,通知机器级数据管理队列回收容器级数据回收管理队列内的数据单元。
88.9.1)源容器节点或者目的容器节点通过信号量方式通知机器级数据管理队列,并将自身的容器节点编号发送给机器级数据管理队列;
89.9.2)机器级数据管理队列通过源容器节点或者目的容器节点发送的容器节点编号找到其容器级数据回收管理队列,并回收数据单元。
90.步骤10,当前数据单元传输流程结束,循环处理接下一个数据单元。
91.以上描述仅是本发明的一个具体事例,并不构成对本发明的任何限制,显然对于本领域的专业人员来说,在了解了本发明内容和原理后,都可能在不背离本发明原理、结构的情况下,进行形式和细节上的各种修改和改变,但是这些基于本发明思想的修正和改变仍在本发明的权利要求保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1