CN115037631B - 基于集群的网络仿真方法、装置和网络仿真*** - Google Patents
基于集群的网络仿真方法、装置和网络仿真*** Download PDFInfo
- Publication number
- CN115037631B CN115037631B CN202210521941.4A CN202210521941A CN115037631B CN 115037631 B CN115037631 B CN 115037631B CN 202210521941 A CN202210521941 A CN 202210521941A CN 115037631 B CN115037631 B CN 115037631B
- Authority
- CN
- China
- Prior art keywords
- event
- time stamp
- minimum time
- target cluster
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/145—Network analysis or design involving simulating, designing, planning or modelling of a network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供了一种基于集群的网络仿真方法、装置和网络仿真***,该方法包括:第一获取步骤,获取目标集群的事件列表的最小时戳,得到第一最小时戳,第一最小时戳为目标集群的事件列表中发生时间最早的事件的时戳,目标集群为多个集群中的一个;第二获取步骤,获取所有的事件列表的最小时戳,得到第二最小时戳,第二最小时戳为所有的事件列表中发生时间最早的事件的时戳;控制步骤,在第一最小时戳小于或者等于第二最小时戳的情况下,控制目标集群执行第一最小时戳对应的事件;依次重复第一获取步骤、第二获取步骤和控制步骤至少一次,直至目标集群的事件列表中的所有的事件执行完成。该方法解决了现有技术中无法实现集群仿真功能的问题。
Description
技术领域
本申请涉及网络仿真技术领域,具体而言,涉及一种基于集群的网络仿真方法、装置、计算机可读存储介质、处理器和网络仿真***。
背景技术
网络仿真是一种利用数学建模和统计分析的方法模拟网络行为,通过建立网络设备和网络链路的模型,模拟网络流量的传输,准确分析复杂网络的性能。使用离散事件调度机制,使网络***的关键行为和状态变化发生在一系列离散的时点,可以充分简化仿真流程、提升仿真效率。
现有主流的通信网络仿真软件有ns-3,OPNET,两者都是基于离散事件仿真机制。
OPNET是商业化通信网络仿真软件的佼佼者,通过OPNET仿真应用可以得到通信网络性能的各种描述参量,如时延、流量、呼叫阻塞率等,在经费充足的情况下,OPNET是网络建模与分析理想的选择。
ns-3是一款开源的网络仿真软件,拥有较为丰富的模型库,但学习曲线陡峭、使用起来难度较大,可视化功能不够完善。当仿真实体数目很多时,需要更多的内存资源,运行速度明显变慢。
如今,集群已经成为提升计算性能的主流方法之一,两款仿真软件集成度较高,都未提供一种支持多机部署、协同计算的集群仿真功能,ns-3虽然提供了两种分布式仿真模式,但均只支持PPP协议(Point-to-point Protocol),远无法满足仿真需求。
在背景技术部分中公开的以上信息只是用来加强对本文所描述技术的背景技术的理解,因此,背景技术中可能包含某些信息,这些信息对于本领域技术人员来说并未形成在本国已知的现有技术。
发明内容
本申请的主要目的在于提供一种基于集群的网络仿真方法、装置、计算机可读存储介质、处理器和网络仿真***,以解决现有技术中无法实现集群仿真功能的问题。
根据本发明实施例的一个方面,提供了一种基于集群的网络仿真方法,仿真装置包括多个集群,所述集群包括多个仿真对象和事件列表,所述仿真对象用于执行所述事件列表的事件,所述事件列表与所述集群一一对应,所述方法包括:第一获取步骤,获取目标集群的所述事件列表的最小时戳,得到第一最小时戳,所述第一最小时戳为所述目标集群的所述事件列表中发生时间最早的所述事件的时戳,所述目标集群为多个所述集群中的一个;第二获取步骤,获取所有的所述事件列表的最小时戳,得到第二最小时戳,所述第二最小时戳为所有的所述事件列表中发生时间最早的所述事件的时戳;控制步骤,在所述第一最小时戳小于或者等于所述第二最小时戳的情况下,控制所述目标集群执行所述第一最小时戳对应的所述事件;依次重复所述第一获取步骤、所述第二获取步骤和所述控制步骤至少一次,直至所述目标集群的所述事件列表中的所有的所述事件执行完成。
可选地,在第一获取步骤之前,所述方法还包括:检测所述目标集群是否存在其他所述集群发送的消息,所述消息包括交互数据、接收完成时间和目标仿真对象的ID,所述接收完成时间为所述消息的发送时间与传输过程的时延的和;在所述消息存在的情况下,所述目标集群的所述事件列表中添加接收事件,并对所述目标集群的所述事件列表重新排序,所述接收事件的时戳为所述接收完成时间;将所述交互数据发送至所述目标仿真对象。
可选地,所述集群包括消息接收缓存区,在所述目标集群的所述事件列表中添加接收事件之前,所述方法还包括:接收其他所述集群发送的消息并将所述消息存储至所述目标集群对应的所述消息接收缓存区。
可选地,所述仿真对象包括消息队列,将所述交互数据发送至所述目标仿真对象,包括:将所述交互数据转存至所述目标仿真对象的所述消息队列;清空所述目标集群对应的所述消息接收缓存区。
可选地,所述事件列表的存储结构为小根堆结构,所述事件列表的最小时戳为堆顶事件的时戳。
可选地,所述消息接收缓存区为char型数组。
根据本发明实施例的另一方面,还提供了一种基于集群的网络仿真装置,仿真***包括多个集群,所述集群包括多个仿真对象和事件列表,所述仿真对象用于执行所述事件列表的事件,所述事件列表与所述集群一一对应,所述装置包括:第一获取单元,用于执行第一获取步骤,获取目标集群的所述事件列表的最小时戳,得到第一最小时戳,所述第一最小时戳为所述目标集群的所述事件列表中发生时间最早的所述事件的时戳,所述目标集群为多个所述集群中的一个;第二获取单元,用于执行第二获取步骤,获取所有的所述事件列表的最小时戳,得到第二最小时戳,所述第二最小时戳为所有的所述事件列表中发生时间最早的所述事件的时戳;控制单元,用于执行控制步骤,在所述第一最小时戳小于或者等于所述第二最小时戳的情况下,控制所述目标集群执行所述第一最小时戳对应的所述事件;重复单元,用于执行依次重复所述第一获取步骤、所述第二获取步骤和所述控制步骤至少一次,直至所述目标集群的所述事件列表中的所有的所述事件执行完成。
根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的程序,其中,所述程序执行任意一种所述的方法。
根据本发明实施例的再一方面,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行任意一种所述的方法。
根据本发明实施例的又一方面,还提供了一种网络仿真***,包括:仿真装置、一个或多个处理器、存储器以及一个或多个程序,其中,所述仿真装置包括多个集群,所述集群包括多个仿真对象和事件列表,所述仿真对象用于执行所述事件列表的事件,所述事件列表与所述集群一一对应,所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行任意一种所述的方法。
在本发明实施例中,上述基于集群的网络仿真方法中,首先,执行第一获取步骤,获取目标集群的上述事件列表的最小时戳,得到第一最小时戳,上述第一最小时戳为上述目标集群的上述事件列表中发生时间最早的上述事件的时戳,上述目标集群为多个上述集群中的一个;然后,执行第二获取步骤,获取所有的上述事件列表的最小时戳,得到第二最小时戳,上述第二最小时戳为所有的上述事件列表中发生时间最早的上述事件的时戳;然后,执行控制步骤,在上述第一最小时戳小于或者等于上述第二最小时戳的情况下,控制上述目标集群执行上述第一最小时戳对应的上述事件;最后,执行依次重复上述第一获取步骤、上述第二获取步骤和上述控制步骤至少一次,直至上述目标集群的上述事件列表中的所有的上述事件执行完成。该方法在第一最小时戳小于或者等于第二最小时戳的情况下,即目标集群的事件列表的最小时戳为所有的事件列表的最小时戳,控制目标集群执行上述第一最小时戳对应的事件,可以确保各集群按照事件的时戳顺序执行事件,实现了支持多机部署、协同计算的集群仿真功能,解决了现有技术中无法实现集群仿真功能的问题。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1示出了根据本申请的一种实施例的仿真时间推进机制的示意图;
图2示出了根据本申请的一种实施例的仿真事件列表逻辑结构的示意图;
图3示出了根据本申请的一种实施例的基于集群的网络仿真方法的流程图;
图4示出了根据本申请的一种实施例的网络仿真三机集群结构的示意图;
图5示出了根据本申请的一种实施例的消息转存与新事件创建的示意图;
图6示出了根据本申请的一种实施例的消息接收缓存区的示意图;
图7示出了根据本申请的一种实施例的基于集群的网络仿真装置的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应该理解的是,当元件(诸如层、膜、区域、或衬底)描述为在另一元件“上”时,该元件可直接在该另一元件上,或者也可存在中间元件。而且,在说明书以及权利要求书中,当描述有元件“连接”至另一元件时,该元件可“直接连接”至该另一元件,或者通过第三元件“连接”至该另一元件。
为了便于描述,以下对本申请实施例涉及的部分名词或术语进行说明:
离散事件仿真***:离散事件仿真***,是指***状态在一系列的随机时点发生变化的仿真***。***主要包含仿真实体、事件、活动、仿真时钟。实体,是***研究的对象;事件,就是引起***状态发生变化行为;活动,通常用来表示两个可以区分的事件之间的过程;仿真时钟,用来表示仿真时间的变化,是离散的时间点。
仿真实体:通信网络仿真的仿真实体是指终端、路由器、核心网、基站等设备,本专利不对各类仿真实体的特征、行为作具体描述,而是将网络中具备收发功能的仿真实体抽象为节点,节点无需实现协议栈,而是提供接口,将封装好的协议栈函数入口***节点。
仿真事件:离散事件仿真是以事件为驱动的,事件的发生引起***状态的变化,事件的执行即方法的调用。本专利中,事件主要是消息的发送、接收、处理、响应,仿真节点是事件新建、执行的主体,事件的执行是节点方法的调用,仿真节点间交互频繁,新的事件可以是依据其他节点的行为而产生的,也可以是仿真初始化时设定的。
仿真时间:事件类都有时戳(Time stamp)属性,表示该事件发生的时间,仿真时间(Simulation Time)表示该服务器的仿真运行的时刻,如图1所示,当需要处理一个事件时,仿真时间会由前一个已经处理过的事件的时戳跳跃至本事件的时戳。在离散事件仿真情形下,每台服务器的仿真时间是跃进的,无须时刻与其余服务器的仿真时间保持一致。
事件管理:事件通过事件管理器维护更新,事件管理器按照时间顺利依次执行事件。由于网络仿真节点之间有频繁的交互行为,节点收到信息后,会依据信息内容产生新的事件,所以事件列表支持在仿真运行时动态地***新事件,本专利采取小根堆结构存储事件,如图2所示,堆顶为时戳最小的事件,***新事件后,调整堆序的平均时间复杂度T(n)=O(log n)。每个服务器都有独立的事件管理器,各服务器通过以太网交互,互相获知事件的时戳信息,向前推进仿真时间,处理仿真事件。
正如背景技术中所说的,现有技术中无法实现集群仿真功能,为了解决上述问题,本申请的一种典型的实施方式中,提供了一种基于集群的网络仿真方法、装置、计算机可读存储介质、处理器和网络仿真***。
根据本申请的实施例,提供了一种基于集群的网络仿真方法。
图3是根据本申请实施例的基于集群的网络仿真方法的流程图。如图3所示,该方法包括以下步骤:
步骤S101,第一获取步骤,获取目标集群的上述事件列表的最小时戳,得到第一最小时戳,上述第一最小时戳为上述目标集群的上述事件列表中发生时间最早的上述事件的时戳,上述目标集群为多个上述集群中的一个;
步骤S102,第二获取步骤,获取所有的上述事件列表的最小时戳,得到第二最小时戳,上述第二最小时戳为所有的上述事件列表中发生时间最早的上述事件的时戳;
步骤S103,控制步骤,在上述第一最小时戳小于或者等于上述第二最小时戳的情况下,控制上述目标集群执行上述第一最小时戳对应的上述事件;
步骤S104,依次重复上述第一获取步骤、上述第二获取步骤和上述控制步骤至少一次,直至上述目标集群的上述事件列表中的所有的上述事件执行完成。
上述基于集群的网络仿真方法中,首先,执行第一获取步骤,获取目标集群的上述事件列表的最小时戳,得到第一最小时戳,上述第一最小时戳为上述目标集群的上述事件列表中发生时间最早的上述事件的时戳,上述目标集群为多个上述集群中的一个;然后,执行第二获取步骤,获取所有的上述事件列表的最小时戳,得到第二最小时戳,上述第二最小时戳为所有的上述事件列表中发生时间最早的上述事件的时戳;然后,执行控制步骤,在上述第一最小时戳小于或者等于上述第二最小时戳的情况下,控制上述目标集群执行上述第一最小时戳对应的上述事件;最后,执行依次重复上述第一获取步骤、上述第二获取步骤和上述控制步骤至少一次,直至上述目标集群的上述事件列表中的所有的上述事件执行完成。该方法在第一最小时戳小于或者等于第二最小时戳的情况下,即目标集群的事件列表的最小时戳为所有的事件列表的最小时戳,控制目标集群执行上述第一最小时戳对应的事件,可以确保各集群按照事件的时戳顺序执行事件,实现了支持多机部署、协同计算的集群仿真功能,解决了现有技术中无法实现集群仿真功能的问题。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
实际上,如图4所示,上述集群为多个互相通信的服务器,每台服务器都有自己的事件管理器,一台服务器的消息发送到另一台服务器,接收方重建数据包后,依据数据内容确定新的事件***自己的事件管理器中,即***事件管理器的事件列表中。
本申请的一种实施例中,在第一获取步骤之前,上述方法还包括:检测上述目标集群是否存在其他上述集群发送的消息,上述消息包括交互数据、接收完成时间和目标仿真对象的ID,上述接收完成时间为上述消息的发送时间与传输过程的时延的和;在上述消息存在的情况下,上述目标集群的上述事件列表中添加接收事件,并对上述目标集群的上述事件列表重新排序,上述接收事件的时戳为上述接收完成时间;将上述交互数据发送至上述目标仿真对象。具体地,仿真对象即为服务器中的节点,发送消息为一个事件,当服务器中的某个节点向其它服务器中的节点发送消息时,将分组信息稍带接收完成时间RcvTime、接收节点号ID一并通过socket发送给目的服务器,这里接收完成时间由发送时刻的仿真时间SimTimeNow与时延求和得出,即RcvTime=SimTimeNow+delay。Delay包含发送时延、传播时延、接收时延,由数据包的大小,设备参数、信道模型求解得出。若接收方与发送方属于同一服务器的节点,则可直接在本服务器的事件管理器中***事件。
具体地,节点队列作为分组缓存区,用以暂存来自其他节点的分组,该缓存区采用hash存储结构,当新的分组到达时,将分组转存至节点的缓存区,并生成一个key,表示该分组存储位置的索引,事件管理器***接收事件同时保存该索引。接下来,服务器取出事件管理器堆顶事件的时戳Tn,通过聚合通信,获取其他服务器中首个事件的时间,选出最小值Ts,若Tn≤Ts,则该服务器可向前推进一步,弹出堆顶,重新调整堆的排序,将本服务器的仿真时间设置为该事件的时戳,执行该事件。
本申请的一种实施例中,如图5所示,上述集群包括消息接收缓存区,在上述目标集群的上述事件列表中添加接收事件之前,上述方法还包括:接收其他上述集群发送的消息并将上述消息存储至上述目标集群对应的上述消息接收缓存区。具体地,每一个服务器均对应一个消息接收缓存区,服务器对应的消息接收缓存区为空,这说明该服务器中的节点没有收到来自其他服务器中节点的消息。
本申请的一种实施例中,上述仿真对象包括消息队列,将上述交互数据发送至上述目标仿真对象,包括:将上述交互数据转存至上述目标仿真对象的上述消息队列;清空上述目标集群对应的上述消息接收缓存区。具体地,如图5所示,若接收缓存区有消息,将上述交互数据先缓存至网络节点消息队列,然后转存至上述目标仿真对象的事件管理器的消息队列,创建新事件,即根据接收完成时间rcvTime和节点ID号,在本服务器的事件列表中***一个时戳为rcvTime的接收事件,调整堆序,表示在rcvTime时相关节点已经完成接收来自其他服务器节点的消息,将该消息转存至节点的消息队列中,清空服务器接收缓存区。
本申请的一种实施例中,上述事件列表的存储结构为小根堆结构,上述事件列表的最小时戳为堆顶事件的时戳。具体地,由于上述事件列表的最小时戳为堆顶事件的时戳,取出事件列表中堆顶事件的时戳Tn,通过聚合通信,获取其他服务器中首个事件的时间,选出最小值Ts,若Tn≤Ts,则该服务器可向前推进一步,弹出堆顶,并重新调整堆的排序,将本服务器的仿真时间设置为该事件的时戳,执行该事件。
需要说明的是,若将要处理的事件是接收事件,则节点根据索引key,取出缓存区的中分组,重新构建数据包,依据数据内容,确定下一步行为,即在本服务器的事件列表中新***一个新的事件。一个服务器仿真结束后,将本服务器的最小时戳Tn设定为最大值,避免其余服务器死锁,全局仿真结束的判定条件是所有服务器仿真均结束。
本申请的一种实施例中,上述消息接收缓存区为char型数组。具体地,为模拟进程间的通信,发送节点根据实际数据的大小确定发送缓存区,长度不可超过MTU,如1000字节,数据接收缓存区由n个固定长度(1000字节)的char型数组构成,维度n与集群的服务器数量一致,如图6所示。
本申请实施例还提供了一种基于集群的网络仿真装置,需要说明的是,本申请实施例的基于集群的网络仿真装置可以用于执行本申请实施例所提供的用于基于集群的网络仿真方法。以下对本申请实施例提供的基于集群的网络仿真装置进行介绍,仿真***包括多个集群,上述集群包括多个仿真对象和事件列表,上述仿真对象用于执行上述事件列表的事件,上述事件列表与上述集群一一对应。
图7是根据本申请实施例的基于集群的网络仿真装置的示意图。如图7所示,该装置包括:
第一获取单元10,用于执行第一获取步骤,获取目标集群的上述事件列表的最小时戳,得到第一最小时戳,上述第一最小时戳为上述目标集群的上述事件列表中发生时间最早的上述事件的时戳,上述目标集群为多个上述集群中的一个;
第二获取单元20,用于执行第二获取步骤,获取所有的上述事件列表的最小时戳,得到第二最小时戳,上述第二最小时戳为所有的上述事件列表中发生时间最早的上述事件的时戳;
控制单元30,用于执行控制步骤,在上述第一最小时戳小于或者等于上述第二最小时戳的情况下,控制上述目标集群执行上述第一最小时戳对应的上述事件;
重复单元40,用于执行依次重复上述第一获取步骤、上述第二获取步骤和上述控制步骤至少一次,直至上述目标集群的上述事件列表中的所有的上述事件执行完成。
上述基于集群的网络仿真装置中,第一获取单元执行第一获取步骤,获取目标集群的上述事件列表的最小时戳,得到第一最小时戳,上述第一最小时戳为上述目标集群的上述事件列表中发生时间最早的上述事件的时戳,上述目标集群为多个上述集群中的一个;第二获取单元执行第二获取步骤,获取所有的上述事件列表的最小时戳,得到第二最小时戳,上述第二最小时戳为所有的上述事件列表中发生时间最早的上述事件的时戳;控制单元执行控制步骤,在上述第一最小时戳小于或者等于上述第二最小时戳的情况下,控制上述目标集群执行上述第一最小时戳对应的上述事件;重复单元执行依次重复上述第一获取步骤、上述第二获取步骤和上述控制步骤至少一次,直至上述目标集群的上述事件列表中的所有的上述事件执行完成。该装置在第一最小时戳小于或者等于第二最小时戳的情况下,即目标集群的事件列表的最小时戳为所有的事件列表的最小时戳,控制目标集群执行上述第一最小时戳对应的事件,可以确保各集群按照事件的时戳顺序执行事件,实现了支持多机部署、协同计算的集群仿真功能,解决了现有技术中无法实现集群仿真功能的问题。
实际上,如图4所示,上述集群为多个互相通信的服务器,每台服务器都有自己的事件管理器,一台服务器的消息发送到另一台服务器,接收方重建数据包后,依据数据内容确定新的事件***自己的事件管理器中,即***事件管理器的事件列表中。
本申请的一种实施例中,在第一获取步骤之前,上述装置还包括消息处理单元,上述消息处理单元包括检测模块、处理模块和发送模块,其中,上述检测模块用于检测上述目标集群是否存在其他上述集群发送的消息,上述消息包括交互数据、接收完成时间和目标仿真对象的ID,上述接收完成时间为上述消息的发送时间与传输过程的时延的和;上述处理模块用于在上述消息存在的情况下,上述目标集群的上述事件列表中添加接收事件,并对上述目标集群的上述事件列表重新排序,上述接收事件的时戳为上述接收完成时间;上述发送模块用于将上述交互数据发送至上述目标仿真对象。具体地,仿真对象即为服务器中的节点,发送消息为一个事件,当服务器中的某个节点向其它服务器中的节点发送消息时,将分组信息稍带接收完成时间RcvTime、接收节点号ID一并通过socket发送给目的服务器,这里接收完成时间由发送时刻的仿真时间SimTimeNow与时延求和得出,即RcvTime=SimTimeNow+delay。Delay包含发送时延、传播时延、接收时延,由数据包的大小,设备参数、信道模型求解得出。若接收方与发送方属于同一服务器的节点,则可直接在本服务器的事件管理器中***事件。
具体地,节点队列作为分组缓存区,用以暂存来自其他节点的分组,该缓存区采用hash存储结构,当新的分组到达时,将分组转存至节点的缓存区,并生成一个key,表示该分组存储位置的索引,事件管理器***接收事件同时保存该索引。接下来,服务器取出事件管理器堆顶事件的时戳Tn,通过聚合通信,获取其他服务器中首个事件的时间,选出最小值Ts,若Tn≤Ts,则该服务器可向前推进一步,弹出堆顶,重新调整堆的排序,将本服务器的仿真时间设置为该事件的时戳,执行该事件。
本申请的一种实施例中,如图5所示,上述集群包括消息接收缓存区,上述装置还包括接收单元,上述接收单元用于在上述目标集群的上述事件列表中添加接收事件之前,接收其他上述集群发送的消息并将上述消息存储至上述目标集群对应的上述消息接收缓存区。具体地,每一个服务器均对应一个消息接收缓存区,服务器对应的消息接收缓存区为空,这说明该服务器中的节点没有收到来自其他服务器中节点的消息。
本申请的一种实施例中,上述仿真对象包括消息队列,上述发送模块包括发送子模块和处理子模块,其中,上述发送子模块用于将上述交互数据转存至上述目标仿真对象的上述消息队列;上述处理子模块用于清空上述目标集群对应的上述消息接收缓存区。具体地,如图5所示,若接收缓存区有消息,将上述交互数据先缓存至网络节点消息队列,然后转存至上述目标仿真对象的事件管理器的消息队列,创建新事件,即根据接收完成时间rcvTime和节点ID号,在本服务器的事件列表中***一个时戳为rcvTime的接收事件,调整堆序,表示在rcvTime时相关节点已经完成接收来自其他服务器节点的消息,将该消息转存至节点的消息队列中,清空服务器接收缓存区。
本申请的一种实施例中,上述事件列表的存储结构为小根堆结构,上述事件列表的最小时戳为堆顶事件的时戳。具体地,由于上述事件列表的最小时戳为堆顶事件的时戳,取出事件列表中堆顶事件的时戳Tn,通过聚合通信,获取其他服务器中首个事件的时间,选出最小值Ts,若Tn≤Ts,则该服务器可向前推进一步,弹出堆顶,并重新调整堆的排序,将本服务器的仿真时间设置为该事件的时戳,执行该事件。
需要说明的是,若将要处理的事件是接收事件,则节点根据索引key,取出缓存区的中分组,重新构建数据包,依据数据内容,确定下一步行为,即在本服务器的事件列表中新***一个新的事件。一个服务器仿真结束后,将本服务器的最小时戳Tn设定为最大值,避免其余服务器死锁,全局仿真结束的判定条件是所有服务器仿真均结束。
本申请的一种实施例中,上述消息接收缓存区为char型数组。具体地,为模拟进程间的通信,发送节点根据实际数据的大小确定发送缓存区,长度不可超过MTU,如1000字节,数据接收缓存区由n个固定长度(1000字节)的char型数组构成,维度n与集群的服务器数量一致,如图6所示。
上述基于集群的网络仿真装置包括处理器和存储器,上述第一获取单元、第二获取单元、控制单元和重复单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来解决现有技术中无法实现集群仿真功能的问题。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现上述方法。
本发明实施例提供了一种处理器,上述处理器用于运行程序,其中,上述程序运行时执行上述方法。
本发明实施例提供了一种网络仿真***,设备包括仿真装置、处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现至少以下步骤:
步骤S101,第一获取步骤,获取目标集群的上述事件列表的最小时戳,得到第一最小时戳,上述第一最小时戳为上述目标集群的上述事件列表中发生时间最早的上述事件的时戳,上述目标集群为多个上述集群中的一个;
步骤S102,第二获取步骤,获取所有的上述事件列表的最小时戳,得到第二最小时戳,上述第二最小时戳为所有的上述事件列表中发生时间最早的上述事件的时戳;
步骤S103,控制步骤,在上述第一最小时戳小于或者等于上述第二最小时戳的情况下,控制上述目标集群执行上述第一最小时戳对应的上述事件;
步骤S104,依次重复上述第一获取步骤、上述第二获取步骤和上述控制步骤至少一次,直至上述目标集群的上述事件列表中的所有的上述事件执行完成。
本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有至少如下方法步骤的程序:
步骤S101,第一获取步骤,获取目标集群的上述事件列表的最小时戳,得到第一最小时戳,上述第一最小时戳为上述目标集群的上述事件列表中发生时间最早的上述事件的时戳,上述目标集群为多个上述集群中的一个;
步骤S102,第二获取步骤,获取所有的上述事件列表的最小时戳,得到第二最小时戳,上述第二最小时戳为所有的上述事件列表中发生时间最早的上述事件的时戳;
步骤S103,控制步骤,在上述第一最小时戳小于或者等于上述第二最小时戳的情况下,控制上述目标集群执行上述第一最小时戳对应的上述事件;
步骤S104,依次重复上述第一获取步骤、上述第二获取步骤和上述控制步骤至少一次,直至上述目标集群的上述事件列表中的所有的上述事件执行完成。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例上述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
从以上的描述中,可以看出,本申请上述的实施例实现了如下技术效果:
1)、本申请的基于集群的网络仿真方法中,首先,执行第一获取步骤,获取目标集群的上述事件列表的最小时戳,得到第一最小时戳,上述第一最小时戳为上述目标集群的上述事件列表中发生时间最早的上述事件的时戳,上述目标集群为多个上述集群中的一个;然后,执行第二获取步骤,获取所有的上述事件列表的最小时戳,得到第二最小时戳,上述第二最小时戳为所有的上述事件列表中发生时间最早的上述事件的时戳;然后,执行控制步骤,在上述第一最小时戳小于或者等于上述第二最小时戳的情况下,控制上述目标集群执行上述第一最小时戳对应的上述事件;最后,执行依次重复上述第一获取步骤、上述第二获取步骤和上述控制步骤至少一次,直至上述目标集群的上述事件列表中的所有的上述事件执行完成。该方法在第一最小时戳小于或者等于第二最小时戳的情况下,即目标集群的事件列表的最小时戳为所有的事件列表的最小时戳,控制目标集群执行上述第一最小时戳对应的事件,可以确保各集群按照事件的时戳顺序执行事件,实现了支持多机部署、协同计算的集群仿真功能,解决了现有技术中无法实现集群仿真功能的问题。
2)、本申请的基于集群的网络仿真装置中,第一获取单元执行第一获取步骤,获取目标集群的上述事件列表的最小时戳,得到第一最小时戳,上述第一最小时戳为上述目标集群的上述事件列表中发生时间最早的上述事件的时戳,上述目标集群为多个上述集群中的一个;第二获取单元执行第二获取步骤,获取所有的上述事件列表的最小时戳,得到第二最小时戳,上述第二最小时戳为所有的上述事件列表中发生时间最早的上述事件的时戳;控制单元执行控制步骤,在上述第一最小时戳小于或者等于上述第二最小时戳的情况下,控制上述目标集群执行上述第一最小时戳对应的上述事件;重复单元执行依次重复上述第一获取步骤、上述第二获取步骤和上述控制步骤至少一次,直至上述目标集群的上述事件列表中的所有的上述事件执行完成。该装置在第一最小时戳小于或者等于第二最小时戳的情况下,即目标集群的事件列表的最小时戳为所有的事件列表的最小时戳,控制目标集群执行上述第一最小时戳对应的事件,可以确保各集群按照事件的时戳顺序执行事件,实现了支持多机部署、协同计算的集群仿真功能,解决了现有技术中无法实现集群仿真功能的问题。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (9)
1.一种基于集群的网络仿真方法,其特征在于,仿真装置包括多个集群,所述集群包括多个仿真对象和事件列表,所述仿真对象用于执行所述事件列表的事件,所述事件列表与所述集群一一对应,所述方法包括:
第一获取步骤,获取目标集群的所述事件列表的最小时戳,得到第一最小时戳,所述第一最小时戳为所述目标集群的所述事件列表中发生时间最早的所述事件的时戳,所述目标集群为多个所述集群中的一个;
第二获取步骤,获取所有的所述事件列表的最小时戳,得到第二最小时戳,所述第二最小时戳为所有的所述事件列表中发生时间最早的所述事件的时戳;
控制步骤,在所述第一最小时戳小于或者等于所述第二最小时戳的情况下,控制所述目标集群执行所述第一最小时戳对应的所述事件;
依次重复所述第一获取步骤、所述第二获取步骤和所述控制步骤至少一次,直至所述目标集群的所述事件列表中的所有的所述事件执行完成,检测所述目标集群是否存在其他所述集群发送的消息,所述消息包括交互数据、接收完成时间和目标仿真对象的ID,所述接收完成时间为所述消息的发送时间与传输过程的时延的和;在所述消息存在的情况下,所述目标集群的所述事件列表中添加接收事件,并对所述目标集群的所述事件列表重新排序,所述接收事件的时戳为所述接收完成时间;将所述交互数据发送至所述目标仿真对象。
2.根据权利要求1所述的方法,其特征在于,所述集群包括消息接收缓存区,在所述目标集群的所述事件列表中添加接收事件之前,所述方法还包括:
接收其他所述集群发送的消息并将所述消息存储至所述目标集群对应的所述消息接收缓存区。
3.根据权利要求2所述的方法,其特征在于,所述仿真对象包括消息队列,将所述交互数据发送至所述目标仿真对象,包括:
将所述交互数据转存至所述目标仿真对象的所述消息队列;
清空所述目标集群对应的所述消息接收缓存区。
4.根据权利要求1所述的方法,其特征在于,所述事件列表的存储结构为小根堆结构,所述事件列表的最小时戳为堆顶事件的时戳。
5.根据权利要求2所述的方法,其特征在于,所述消息接收缓存区为char型数组。
6.一种基于集群的网络仿真装置,其特征在于,仿真***包括多个集群,所述集群包括多个仿真对象和事件列表,所述仿真对象用于执行所述事件列表的事件,所述事件列表与所述集群一一对应,所述装置包括:
第一获取单元,用于执行第一获取步骤,获取目标集群的所述事件列表的最小时戳,得到第一最小时戳,所述第一最小时戳为所述目标集群的所述事件列表中发生时间最早的所述事件的时戳,所述目标集群为多个所述集群中的一个;
第二获取单元,用于执行第二获取步骤,获取所有的所述事件列表的最小时戳,得到第二最小时戳,所述第二最小时戳为所有的所述事件列表中发生时间最早的所述事件的时戳;
控制单元,用于执行控制步骤,在所述第一最小时戳小于或者等于所述第二最小时戳的情况下,控制所述目标集群执行所述第一最小时戳对应的所述事件;
重复单元,用于执行依次重复所述第一获取步骤、所述第二获取步骤和所述控制步骤至少一次,直至所述目标集群的所述事件列表中的所有的所述事件执行完成,所述装置还包括消息处理单元,所述消息处理单元包括检测模块、处理模块和发送模块,其中,所述检测模块用于检测所述目标集群是否存在其他所述集群发送的消息,所述消息包括交互数据、接收完成时间和目标仿真对象的ID,所述接收完成时间为所述消息的发送时间与传输过程的时延的和;所述处理模块用于在所述消息存在的情况下,所述目标集群的所述事件列表中添加接收事件,并对所述目标集群的所述事件列表重新排序,所述接收事件的时戳为所述接收完成时间;所述发送模块用于将所述交互数据发送至所述目标仿真对象。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的程序,其中,所述程序执行权利要求1至5中任意一项所述的方法。
8.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至5中任意一项所述的方法。
9.一种网络仿真***,其特征在于,包括:仿真装置、一个或多个处理器、存储器以及一个或多个程序,其中,所述仿真装置包括多个集群,所述集群包括多个仿真对象和事件列表,所述仿真对象用于执行所述事件列表的事件,所述事件列表与所述集群一一对应,所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行权利要求1至5中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210521941.4A CN115037631B (zh) | 2022-05-13 | 2022-05-13 | 基于集群的网络仿真方法、装置和网络仿真*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210521941.4A CN115037631B (zh) | 2022-05-13 | 2022-05-13 | 基于集群的网络仿真方法、装置和网络仿真*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115037631A CN115037631A (zh) | 2022-09-09 |
CN115037631B true CN115037631B (zh) | 2023-08-22 |
Family
ID=83120650
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210521941.4A Active CN115037631B (zh) | 2022-05-13 | 2022-05-13 | 基于集群的网络仿真方法、装置和网络仿真*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115037631B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103268251A (zh) * | 2013-05-02 | 2013-08-28 | 中国人民解放军国防科学技术大学 | 一种基于时戳截流的并行离散事件仿真时间同步方法 |
CN104615815A (zh) * | 2015-01-27 | 2015-05-13 | 北京仿真中心 | 一种并行模型的消息传输方法及*** |
CN104615492A (zh) * | 2015-03-01 | 2015-05-13 | 中国人民解放军国防科学技术大学 | 一种多核并行离散事件仿真的内存管理方法 |
CN104866374A (zh) * | 2015-05-22 | 2015-08-26 | 北京华如科技股份有限公司 | 基于多任务的离散事件并行仿真及时间同步方法 |
CN105183536A (zh) * | 2015-09-14 | 2015-12-23 | 中国人民解放军国防科学技术大学 | 基于gpu的乐观时间管理方法 |
CN108369533A (zh) * | 2015-10-13 | 2018-08-03 | 施耐德电器工业公司 | 软件定义自动化***的集中化管理 |
CN112163571A (zh) * | 2020-10-29 | 2021-01-01 | 腾讯科技(深圳)有限公司 | 电子设备使用者的属性识别方法、装置、设备及存储介质 |
CN112463326A (zh) * | 2020-11-25 | 2021-03-09 | 中国人民解放军海军航空大学 | 连续离散混合***仿真推进方法及装置、设备及介质 |
CN113468713A (zh) * | 2020-03-31 | 2021-10-01 | 顺丰科技有限公司 | 业务仿真方法、装置、计算机设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101256502B (zh) * | 2007-02-27 | 2011-02-09 | 国际商业机器公司 | 模拟多处理器***的***和方法 |
-
2022
- 2022-05-13 CN CN202210521941.4A patent/CN115037631B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103268251A (zh) * | 2013-05-02 | 2013-08-28 | 中国人民解放军国防科学技术大学 | 一种基于时戳截流的并行离散事件仿真时间同步方法 |
CN104615815A (zh) * | 2015-01-27 | 2015-05-13 | 北京仿真中心 | 一种并行模型的消息传输方法及*** |
CN104615492A (zh) * | 2015-03-01 | 2015-05-13 | 中国人民解放军国防科学技术大学 | 一种多核并行离散事件仿真的内存管理方法 |
CN104866374A (zh) * | 2015-05-22 | 2015-08-26 | 北京华如科技股份有限公司 | 基于多任务的离散事件并行仿真及时间同步方法 |
CN105183536A (zh) * | 2015-09-14 | 2015-12-23 | 中国人民解放军国防科学技术大学 | 基于gpu的乐观时间管理方法 |
CN108369533A (zh) * | 2015-10-13 | 2018-08-03 | 施耐德电器工业公司 | 软件定义自动化***的集中化管理 |
CN113468713A (zh) * | 2020-03-31 | 2021-10-01 | 顺丰科技有限公司 | 业务仿真方法、装置、计算机设备及存储介质 |
CN112163571A (zh) * | 2020-10-29 | 2021-01-01 | 腾讯科技(深圳)有限公司 | 电子设备使用者的属性识别方法、装置、设备及存储介质 |
CN112463326A (zh) * | 2020-11-25 | 2021-03-09 | 中国人民解放军海军航空大学 | 连续离散混合***仿真推进方法及装置、设备及介质 |
Non-Patent Citations (1)
Title |
---|
一种可扩展的Web集群服务器仿真平台;熊智;周寅聃;熊步云;;***仿真学报(第06期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115037631A (zh) | 2022-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7616568B2 (en) | Generic packet generation | |
Fujimoto et al. | Network simulation | |
Bajaj et al. | Glomosim: A scalable network simulation environment | |
Jansen et al. | Shadow: Running Tor in a box for accurate and efficient experimentation | |
CN103535084B (zh) | 网络接入请求的管理 | |
Vigneri et al. | Storage on wheels: Offloading popular contents through a vehicular cloud | |
EP2838243A1 (en) | Capability aggregation and exposure method and system | |
CN102141951A (zh) | 芯片仿真***及方法 | |
Jin et al. | Parallel simulation of software defined networks | |
US20050004787A1 (en) | System and method for real time simulation | |
Bergstrom et al. | The distributed open network emulator: Using relativistic time for distributed scalable simulation | |
CN115037631B (zh) | 基于集群的网络仿真方法、装置和网络仿真*** | |
Meiklejohn et al. | {PARTISAN}: Scaling the Distributed Actor Runtime | |
Dimitriou et al. | Sensenet: a wireless sensor network testbed | |
Rai et al. | A multiphased approach for modeling and analysis of the BitTorrent protocol | |
CN110493210A (zh) | 一种基于sdn的可配置网络安全实验*** | |
CN107018095B (zh) | 基于离散事件的交换单元仿真***及方法 | |
CN115913426A (zh) | 一种虚实协同的天地一体化场景仿真*** | |
Baldoni et al. | Asynchronous active replication in three-tier distributed systems | |
EP2955876A1 (fr) | Simulateur de reseaux d'interconnexion et procede de simulation de reseaux d'interconnexion | |
CN114745285A (zh) | 基于虚拟化容器的大规模分布式虚拟化网络仿真方法 | |
Ricciulli et al. | An adaptable network control and reporting system (ANCORS) | |
CN101834876A (zh) | 基于蓝牙、数据库与udp协议的分布式半物理仿真***及其数据汇总和分发的方法 | |
CN106487902A (zh) | 一种基于消息中间件的数据收集方法和*** | |
Barcellos et al. | Beyond network simulators: Fostering novel distributed applications and protocols through extendible design |
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 |