一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种适用于确定性网络协议的仿真方法及设备

2022-09-01 07:41:25 来源:中国专利 TAG:


1.本发明涉及确定性网络dn技术领域,具体涉及一种适用于确定性网络协议的仿真方法及设备。


背景技术:

2.确定性网络(deterministic networking,dn)是一项帮助实现ip网络从“尽力而为(best-effort)”到“准时、准确、快速”,控制并降低端到端时延的技术,它能给承载的业务提供确定性业务保证的能力。确定性网络dn的基本特征是:时钟同步、零拥塞数据丢失、可靠数据包交付、与多种服务共存。时间触发以太网(time-triggered ethernet,tte)、时间敏感网络(time-sensitive networking,tsn)是代表性的dn网络。
3.tte对802.3完全兼容,动态地执行时钟同步算法,使整个网络有一个相同的全局时间,而网络中的每个端系统发送和接收数据都是根据这个全局时间作为参照,这样就在很大程度上减小甚至消除了传输时延和抖动。
4.tsn是新一代标准以太网技术,ieee 802.1工作组的一个子任务组ieee tsn工作组制定了一系列开放标准协议对以太网进行增强,如时钟同步协议ieee 802.1as,帧可复制和消除协议ieee 802.1cb,使tsn兼具高速率和确定性,并可与标准以太网兼容和互通。
5.现有的dn网络协议仿真往往针对某一种特定的仿真场景,不能满足任意场景下的多元仿真需求,缺乏一定的灵活性和扩展性。


技术实现要素:

6.本发明所要解决的技术问题是现有的dn网络协议仿真往往针对某一种特定的仿真场景,不能满足任意场景下的多元仿真需求,缺乏一定的灵活性和扩展性。本发明目的在于提供一种适用于确定性网络协议的仿真方法及设备,各个模块之间接口简单、解耦性较好,通过软件定义故障的方式,让配置更加简单、方便,可以在同一场景下一次性完成多种故障类型及组合的仿真;从而满足任意场景下的多元仿真需求,具有较强的灵活性和扩展能力。
7.本发明通过下述技术方案实现:
8.第一方面,本发明提供一种适用于确定性网络协议的仿真方法,该仿真方法包括:
9.步骤s1,进行确定性网络仿真节点的抽象设计,得到确定性网络仿真节点;所述确定性网络仿真节点包括普通节点、交换机节点和解析器节点;通过解析器节点为所述普通节点和交换机节点进行基本配置,所述基本设置包括普通节点、交换机节点的id属性、数量及端口等;
10.步骤s2,通过软件方式在所述解析器节点中定义普通节点、交换机节点的流量信息和故障信息;所述流量信息包括流量描述变量和流量生成函数,所述故障信息包括原子故障变量、故障描述变量和故障生成函数;
11.步骤s3,预设以多元组形式描述的故障配置文件和流量配置文件;
12.步骤s4,根据步骤s1-s2搭建的网络拓扑进行仿真,由所述解析器节点读取步骤s3中预设的故障配置文件和流量配置文件,解析出本次仿真涉及到的所有故障和流量,然后进行相应流量数据帧在普通节点与交换机之间的转发处理,最终得到仿真结果。
13.进一步地,所述普通节点包括输入模块、输出模块、数据控制模块、流量处理模块、同步协议模块和本地时钟模块;
14.所述输入模块,用于对从端口接收的数据帧进行一般性处理,包括流量整形、流量过滤、完整性检查、缓存、帧冗余相关功能以及表现出故障行为等,并将处理后的数据帧发送至数据控制模块;其中,每个端口对应一个输入模块;
15.所述数据控制模块,用于对输入的数据帧采用时间调度、优先级调度以及支持自定义调度算法进行调度,同时将数据帧转发给正确的后续模块;
16.所述流量处理模块,用于产生及接收业务流量,如在tte中,traffic_processer能够产生及接收tt(time-triggered)流、be(best-effort)流、rc(rate-constrained)流;在tsn中,traffic_processer能够产生及接收nc(network-control)流、ca(critical-applications)流等;
17.所述同步协议模块,用于实现确定性网络协议中进行时间同步,一方面它能够产生、接收、处理时间同步流量,最终实现整个网络的同步,另一方面他能表现出故障行为。比如在tte中,sync_protocol模块能够处理pcf(protocol control frame)帧;在tsn网络中,sync_protocol模块能够处理协议帧;
18.所述本地时钟模块,用于记录、更新节点的时钟信息以及表现出故障行为,及用于细粒度模拟频率漂移和时钟漂移;
19.所述输出模块,用于对即将发送的数据帧进行一般性处理,包括流量整形、计算校验码、修改帧字段(如802.1cb中的流识别)功能以及表现出故障行为等;并将处理后的数据帧通过发送至输出端口;其中,每个端口对应一个输入模块。
20.进一步地,所述交换机节点包括输入模块、输出模块、数据控制模块、同步协议模块和本地时钟模块。
21.进一步地,所述本地时钟模块中记录、更新节点的时钟信息,是采用事件推进仿真时间,再利用仿真时间推进本地时间的方法实现时钟同步;具体包括:
22.定义时钟描述二元组t={上一次记录的本地时间,上一次记录的仿真时间},设置下一次事件及其发生仿真时间,如在opnet中可通过设置自中断的方式;
23.根据所述二元组,利用当前的仿真时间减去上一次记录的仿真时间得到绝对时间差;将所述绝对时间差乘以修正系数(考虑时钟漂移、频率偏移)与上一次记录的本地时间相加,等到更新后的本地时间;并将仿真时间更新为当前的仿真时间。
24.进一步地,所述数据帧格式包括帧首定界符(start frame delimiter,sfd)、帧头(header)和载荷(payload)三部分,每部分单独表示成一个原子粒度的结构;所述帧首定界符,用于事件的触发,让相应模块做好处理后续到达的数据帧的准备。
25.进一步地,所述步骤s4中进行数据帧在普通节点与交换机之间的转发处理,是采用模拟交换机cut-through行为的方法进行数据帧的转发处理,处理过程中只检查数据帧的帧头,并直接将数据帧直通到相应的输出端口即可。
26.进一步地,所述采用模拟交换机cut-through行为的方法进行数据帧的转发处理,
包括:
27.步骤1:普通节点依次发送数据帧的帧首定界符(start frame delimiter,sfd)、帧头(header)和载荷(payload)至交换机节点,其中发送过程中通过设置各个片段对应的发送时延保证整个数据帧时间完整性的正确;
28.步骤2:所述交换机节点根据依次接收的帧首定界符(start frame delimiter,sfd)、帧头(header)和载荷(payload),进行缓存和转发处理;包括:
29.步骤21:当所述数据帧的帧首定界符到达输入模块时,在所述输入模块中对所述帧首定界符进行直接缓存;
30.步骤22:当所述数据帧的帧头到达输入模块时,在所述输入模块中对所述帧头进行缓存,同时根据所述帧头进行查表、过滤、流量整形等操作,得到处理结果;并将处理结果发送给数据控制模块;数据控制模块根据所述处理结果判断是否丢弃或者转发所述数据帧;若转发所述数据帧,执行步骤23;
31.步骤23:所述数据帧的帧首定界符和帧头发送给数据控制模块进行缓存,当所述数据帧被调度时,数据控制模块将帧首定界符和帧头发送给相应的输出模块;
32.步骤24:输出模块设置帧首定界符和帧头的发送时延后将其发送给下一级网络节点;
33.步骤25:当载荷到达输入模块,根据帧头在步骤22的处理结果决定是否丢弃;若否,将所述载荷发送给数据控制模块模块,并由数据控制模块将所述载荷直接发送给相应的输出模块;
34.步骤26:输出模块将预先计算出的冗余校验码插入所述载荷中,设置载荷的发送时延后将其发送给下一级网络节点。
35.进一步地,所述步骤s3中的流量配置文件包括本次仿真中整个网络的非时间同步周期流量的信息,由若干条目组成,每一个条目可实例化为一个流量数据结构对象;每一个条目π是由七元组描述:
36.π={目标节点,流量名称,流量开始时间,流量结束时间,流量周期,帧间隔,帧数量};
37.其中,帧数量指在一个周期内,节点发送此类数据帧的数量;帧间隔指在一个周期内,节点发送此类数据帧的间隔,单位为上文的clock;
38.所述故障配置文件包括本次仿真中整个网络拓扑的故障信息,由若干条目组成,每一个条目由四元组ψ描述;ψ={故障发生时间段,故障类型,故障语义描述,故障对象}。
39.进一步地,所述步骤s4中由所述解析器节点读取步骤s3中预设的故障配置文件和流量配置文件,具体包括:
40.将预设的流量配置文件导入网络拓扑中的解析器节点,解析器节点读取所述流量配置文件中的每一项子条目,调用所述流量生成函数去改变流量描述变量的值,直到读取完毕;及普通节点根据自身的流量集周期性地产生不同类型的流量;
41.将预设的故障配置文件导入网络拓扑中的解析器节点,解析器节点读取所述故障配置文件中的每一项子条目,调用所述故障生成函数,为对应设备加入故障事件直到读取完毕;及解析器节点按照时间顺序执行所述故障事件,通过改变原子故障变量的取值,让设定设备在设定时间段内发生预设类型的故障,达到故障自动化仿真的目的。
42.第二方面,本发明又提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述的一种适用于确定性网络协议的仿真方法。
43.本发明与现有技术相比,具有如下的优点和有益效果:
44.1、本发明的仿真方法能够适用于不同的确定性网络协议,各个模块之间接口简单、解耦性较好,仿真节点整体上灵活性、拓展性较强。
45.2、本发明的时间推进方法使离散仿真器避免了由于模拟真实的晶振而产生大量的不必要的事件,同时将仿真时间和本地时间结合,能够更加方便地模拟时钟漂移等时钟故障。
46.3、本发明的帧细粒度方法能够使离散事件仿真器“摆脱”以整个数据帧为单位进行通信的限制以及模拟fpga硬件的行为,理论上来说,帧分片的数量越多,逼近效果越好。
47.4、本发明的时间细粒度方法对模块、器件的时延特性进行了模拟,使仿真更特近实际。
48.5、本发明的模拟交换机cut-through方法使离散事件仿真器中的交换机不仅仅支持存储转发。
49.6、本发明的软件定义流量方法和软件定义故障方法让配置更加简单、方便,避免了手动修改、配置的麻烦。通过软件定义故障的方式,可以在同一场景下一次性完成多种故障类型及组合的仿真。如在100种故障类型的仿真需求下,如果采用传统的方式,为每一种故障类型单独设置故障场景,可能需要仿真数十次甚至上百次,而采用本方法则仅需几次甚至一次。软件定义流量同理。这两种方法达到了按需仿真的目的。
附图说明
50.此处所说明的附图用来提供对本发明实施例的进一步理解,构成本技术的一部分,并不构成对本发明实施例的限定。在附图中:
51.图1为本发明一种适用于确定性网络协议的仿真方法流程图。
52.图2为本发明网络仿真节点抽象化示意图。
53.图3为本发明tte网络故障分割模型图。
54.图4为本发明软件定义流量流程图。
55.图5为本发明软件定义故障流程图。
56.图6为本发明示例网络拓扑图。
57.图7为本发明示例流量配置文件形式图。
58.图8为本发明示例故障配置文件形式图。
59.图9为本发明示例流量描述变量图。
60.图10为本发明示例流量生成函数处理流程图。
61.图11为本发明示例原子故障变量定义图。
62.图12为本发明示例故障描述变量图。
63.图13为本发明示例故障函数处理流程图。
具体实施方式
64.为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
65.实施例1
66.如图1所示,本发明一种适用于确定性网络协议的仿真方法,其中包括:网络仿真节点的抽象方法、适用于确定性网络协议的时间推进方法、细粒度仿真方法、软件定义流量方法、软件定义故障方法,是一种能够统一确定性网络协议仿真建模的方法。该方法包括:
67.步骤s1,进行确定性网络仿真节点的抽象设计,得到确定性网络仿真节点;所述确定性网络仿真节点包括普通节点、交换机节点和解析器节点;通过解析器节点为所述普通节点和交换机节点进行基本配置,所述基本设置包括普通节点、交换机节点的id属性、数量及端口等;
68.步骤s2,通过软件方式在所述解析器节点中定义普通节点、交换机节点的流量信息和故障信息;所述流量信息包括流量描述变量和流量生成函数,所述故障信息包括原子故障变量、故障描述变量和故障生成函数;
69.步骤s3,预设以多元组形式描述的故障配置文件和流量配置文件;
70.步骤s4,根据步骤s1-s2搭建的网络拓扑进行仿真,由所述解析器节点读取步骤s3中预设的故障配置文件和流量配置文件,解析出本次仿真涉及到的所有故障和流量,然后进行相应流量数据帧在普通节点与交换机之间的转发处理,最终得到仿真结果。
71.第一,网络仿真节点的抽象方法:
72.本实施例中,如图2所示,图2中虚线表示模块可能不存在;所述普通节点包括输入模块input、输出模块output、数据控制模块data_ctrl、流量处理模块traffic_processer、同步协议模块sync_protocol和本地时钟模块local_clock;
73.所述输入模块,用于对从端口接收的数据帧进行一般性处理,包括流量整形、流量过滤、完整性检查、缓存、帧冗余相关功能以及表现出故障行为等,并将处理后的数据帧发送至数据控制模块;其中,在网络拓扑结构上每个端口对应一个输入模块;
74.所述数据控制模块,作为整个节点的核心单元,用于对输入的数据帧采用时间调度、优先级调度以及支持自定义调度算法进行调度,同时将数据帧转发给正确的后续模块;其中,在网络拓扑结构上一个网络节点具有一个数据控制模块。
75.所述流量处理模块,用于产生及接收业务流量,如在tte中,流量处理模块能够产生及接收tt(time-triggered)流、be(best-effort)流、rc(rate-constrained)流;在tsn中,traffic_processer能够产生及接收nc(network-control)流、ca(critical-applications)流等;其中,在网络拓扑结构上一个网络节点具有一个流量处理模块。
76.所述同步协议模块,用于实现确定性网络协议中进行时间同步,一方面它能够产生、接收、处理时间同步流量,最终实现整个网络的同步,另一方面他能表现出故障行为。比如在tte中,同步协议模块能够处理pcf(protocol control frame)帧;在tsn网络中,同步协议模块能够处理协议帧;其中,在网络拓扑结构上一个网络节点具有一个同步协议模块。
77.所述本地时钟模块,用于记录、更新节点的时钟信息以及表现出故障行为,及用于细粒度模拟频率漂移和时钟漂移;其中,在网络拓扑结构上一个网络节点具有一个本地时
钟模块。
78.所述输出模块,用于对即将发送的数据帧进行一般性处理,包括流量整形、计算校验码、修改帧字段(如802.1cb中的流识别)功能以及表现出故障行为等;并将处理后的数据帧通过发送至输出端口;其中,在网络拓扑结构上每个端口对应一个输入模块。
79.本实施例中,所述交换机节点包括输入模块、输出模块、数据控制模块、同步协议模块和本地时钟模块。每个模块的实现的功能与普通节点类似,但是区别是交换机节点中不会产生、解析非时间同步流量,故在交换机节点中不会存在流量处理模块。
80.第二,适用于确定性网络协议的时间推进方法:
81.本实施例中,在离散事件仿真器中,不存在晶振这样的器件周期性地推进仿真时间,仿真时间的变化仅与事件有关。另一方面,确定性网络协议与设备的本地时钟紧密关联,而设备的本地时间独立于仿真时间,所以本发明定义了一种适用于确定性网络协议的时间推进方法:即所述本地时钟模块中记录、更新节点的时钟信息,是采用事件推进仿真时间,再利用仿真时间推进本地时间的方法实现时钟同步;具体包括:
82.定义时钟描述二元组t={上一次记录的本地时间,上一次记录的仿真时间},设置下一次事件及其发生仿真时间,如在opnet中可通过设置自中断的方式;
83.更新时间:根据所述二元组,利用当前的仿真时间减去上一次记录的仿真时间得到绝对时间差;将所述绝对时间差乘以修正系数(考虑时钟漂移、频率偏移)与上一次记录的本地时间相加,等到更新后的本地时间;并将仿真时间更新为当前的仿真时间。
84.第三,细粒度仿真方法
85.细粒度仿真方法包括帧的细粒度仿真方法和时间细粒度的仿真方法;
86.在离散事件仿真器中,数据帧并不像现实那样,作为一串连续的比特流,而是将之定义成一种数据结构,所以仿真能够处理的数据粒度是整帧/整包,本发明称之为“原子粒度”。为此,本发明提出了以下解决方案。
87.(1)帧细粒度化
88.将一个数据帧分成多个部分,每一个部分单独定义成一个原子粒度的结构。在本发明中,将数据帧分成了三个部分:帧首定界符(start frame delimiter,sfd)、帧头(header)、载荷(payload)。
89.所述帧首定界符,用于事件的触发,让相应模块做好处理后续到达的数据帧的准备。
90.(2)时间细粒度化
91.为了更好地模拟真实fpga硬件的行为,首先定义仿真的时间最小粒度为一个clock,即晶振震荡一次的周期。所有模块处理事件消耗的时间均以clock为单位。
92.对器件、模块、行为的时延特性模拟如下:
93.fifo(first in first out)的状态由空变为非空有一个clock的时延,fifo发送数据帧时会有一个clock的时延。
94.网络节点内用到crossbar时,crossbar从收到控制信号到建立相应的连接有一个clock的时延。
95.当数据控制模块使用轮询调度算法时,一个clock内只能对某一个端口的数据帧进行调度。当同一时刻多个端口都有调度请求时,后续服务的端口需要依次增加一个clock
的时延。
96.交换机节点查找转发表确定转发端口时,有3个clock的时延。
97.端口传输数据帧时会有l/v个clock的时延,其中l为帧的长度,单位为byte,v为端口的传输速率,单位为v byte/clock。
98.(3)模拟交换机cut-through行为
99.由于离散事件仿真器处理的数据粒度是整帧,意味着在仿真中,交换机在收到整个数据帧之后才会触发后续的转发流程。而交换机节点在cut-through的时候只检查数据帧的帧头,然后直接将数据帧直通到相应的输出端口。为此,本发明定义了离散事件仿真器中模拟交换机cut-through行为的方法,
100.本实施例中,所述采用模拟交换机cut-through行为的方法进行数据帧的转发处理,包括:
101.步骤1:普通节点依次发送数据帧的帧首定界符(start frame delimiter,sfd)、帧头(header)和载荷(payload)至交换机节点,其中发送过程中通过设置各个片段对应的发送时延保证整个数据帧时间完整性的正确;
102.步骤2:所述交换机节点根据依次接收的帧首定界符(start frame delimiter,sfd)、帧头(header)和载荷(payload),进行缓存和转发处理;包括:
103.步骤21:当所述数据帧的帧首定界符到达输入模块时,在所述输入模块中对所述帧首定界符进行直接缓存;
104.步骤22:当所述数据帧的帧头到达输入模块时,在所述输入模块中对所述帧头进行缓存,同时根据所述帧头进行查表、过滤、流量整形等操作,得到处理结果;并将处理结果发送给数据控制模块;数据控制模块根据所述处理结果判断是否丢弃或者转发所述数据帧;若转发所述数据帧,执行步骤23;
105.步骤23:所述数据帧的帧首定界符和帧头发送给数据控制模块进行缓存,当所述数据帧被调度时,数据控制模块将帧首定界符和帧头发送给相应的输出模块;
106.步骤24:输出模块设置帧首定界符和帧头的发送时延后将其发送给下一级网络节点;
107.步骤25:当载荷到达输入模块,根据帧头在步骤22的处理结果决定是否丢弃;若否,将所述载荷发送给数据控制模块模块,并由数据控制模块将所述载荷直接发送给相应的输出模块;
108.步骤26:输出模块将预先计算出的冗余校验码插入所述载荷中,设置载荷的发送时延后将其发送给下一级网络节点。
109.第四,软件定义流量方法
110.对于非时间同步的周期性流量,也可采用软件定义的方式,在明确了网络中相应的流量类型后,可按照如下步骤进行:
111.步骤1:定义流量描述变量和流量生成函数
112.首先,需要定义流量描述数据结构。流量描述数据结构说明了某一种流量的相关属性,比如流量名称、流量的开始时间和结束时间等。然后定义流量描述变量,表示网络中某一个节点在仿真中产生的流量集。同理,将流量变量定义成二维数组(第一维度表示产生流量的设备)的形式,并且在仿真中全局可见。
113.流量生成函数根据解析器传递的形参,产生相应的流量数据结构实例,插入到相应节点的流量集中。
114.步骤2:导入流量配置文件
115.流量配置文件包含了本次仿真中整个网络的非时间同步周期流量的信息,由若干条目组成,每一个条目可实例化为一个流量数据结构对象。每一个条目由七元组描述。
116.π={目标节点,流量名称,流量开始时间,流量结束时间,流量周期,帧间隔,帧数量};其中,帧数量指在一个周期内,节点发送此类数据帧的数量;帧间隔指在一个周期内,节点发送此类数据帧的间隔,单位为上文的clock;
117.将预先准备好的流量配置文件导入网络拓扑中的解析器节点中,解析器节点读取每一项子条目,调用步骤1的流量生成函数,直到读取完毕。见图4所示。
118.最后,普通节点根据自身的流量集周期性地产生不同类型的流量。
119.第五,软件定义故障方法
120.随着网络规模的增大,网络设备增多,网络拓扑变得复杂,故障模式也会变得复杂。通常对于网络协议的分析采用形式化方法,形式化方法提供系统某些属性的数学证明,这在安全关键系统的设计中具有重要价值。
121.但是,出于多种原因,不能仅依赖正式确定的结果来验证系统的正确性。首先,形式化证明需要人为的精心设计,但认为设计并不一定能够完整地覆盖各种故障。此外,证明是在某些假设下进行的(例如,一次最多只有一个故障组件),但是通常设计人员需要了解故障假设域之外的系统行为。此外,证明是基于规范和标准完成的,这些规范和标准忽略了重要的实现选择,并且通常不会告知甚至限制实现开销。同时由于运行的网络拓扑和网络环境的差异,相同的协议也会展现出不同的行为。
122.所以本发明研究寻找一种能够简化故障仿真的方法是十分重要的,这种方法能够方便开发人员轻松的构建各种故障场景,同时不需要了测试对象的工作机制,此外还能够遍历当前网络所构成的集合空间中所有故障的可能性。
123.步骤1:定义原子性故障及原子故障变量
124.确定性网络协议的故障模式是对网络设备故障后对外行为的描述,原子性故障定义为不可再分的故障,通过对原子性故障进行组合,我们可以得到网络中设备可能发生的故障的全集。如在tte中,我们按照图3的方式定义原子故障集。对上述原子故障组合可得到tte中定义的静默故障、遗漏故障、不一致故障、遗漏不一致故障这四种故障模式。
125.为网络中每一台设备的每一类原子故障都定义一个原子故障变量,用来表明该设备是否发生了此类原子故障。通常,将原子故障变量定义成二维数组(第一维度表示发生故障的设备,第二维度表示发生故障的部件)的形式,并且在仿真中全局可见。
126.步骤2:利用故障语义描述故障
127.任意一种故障都能由抽象为一种或多种原子性故障的逻辑运算,将该逻辑运算定义为此故障的故障语义描述。
128.步骤3:定义故障描述变量和故障生成函数
129.步骤3.1:定义故障描述数据结构。故障描述数据结构描述了仿真中发生的某一次故障的属性,如故障类型,故障开始时间、故障结束时间、相关原子故障等。
130.步骤3.2:定义故障描述变量,表示网络中的某一台设备在仿真中发生的故障事件
集。同理,将故障描述变量定义成二维数组(第一维度表示发生故障的设备)。
131.步骤3.3:定义故障生成函数,故障生成函数根据解析器节点传递的形参,例化出特定故障事件,插入到对应设备的故障事件集中。
132.步骤4:导入故障配置文件
133.故障配置文件包含了本次仿真中整个网络拓扑的故障信息,由若干条目组成。每一条目由四元组ψ描述。
134.ψ={故障发生时间段,故障类型,故障语义描述,故障对象}
135.将预先准备好的故障配置文件导入网络拓扑中的解析器节点,解析器节点读取每一项子条目,调用步骤3的故障生成函数,为对应设备加入故障事件直到读取完毕。见图5所示。
136.最后,解析器节点按照时间顺序执行故障事件,通过改变原子故障变量的取值,让特定的设备在特定时间段内发生特定类型的故障,达到故障自动化仿真的目的。
137.本实施例中,解析器节点是一个“特殊”的节点,负责读取配置文件,然后解析出本次仿真涉及到的所有故障和流量,其对整个网络是全局可见的。同时解析器节点可配置网络中节点数量、交换机数量、节点端口数量、交换机端口数量。
138.本发明具有如下优势:
139.本发明的仿真方法能够适用于不同的确定性网络协议,各个模块之间接口简单、解耦性较好,仿真节点整体上灵活性、拓展性较强。
140.本发明的时间推进方法使离散仿真器避免了由于模拟真实的晶振而产生大量的不必要的事件,同时将仿真时间和本地时间结合,能够更加方便地模拟时钟漂移等时钟故障。
141.本发明的帧细粒度方法能够使离散事件仿真器“摆脱”以整个数据帧为单位进行通信的限制以及模拟fpga硬件的行为,理论上来说,帧分片的数量越多,逼近效果越好。
142.本发明的时间细粒度方法对模块、器件的时延特性进行了模拟,使仿真更特近实际。
143.本发明的模拟交换机cut-through方法使离散事件仿真器中的交换机不仅仅支持存储转发。
144.本发明的软件定义流量方法和软件定义故障方法让配置更加简单、方便,避免了手动修改、配置的麻烦。通过软件定义故障的方式,可以在同一场景下一次性完成多种故障类型及组合的仿真。如在100种故障类型的仿真需求下,如果采用传统的方式,为每一种故障类型单独设置故障场景,可能需要仿真数十次甚至上百次,而采用本方法则仅需几次甚至一次。软件定义流量同理。这两种方法达到了按需仿真的目的。
145.上述4种方法能够通用于确定性网络协议,统一了确定性网络协议仿真建模。
146.实施例2
147.本实施例与实施例1的区别在于,本实施例以tte网络为例,设普通节点数量为4,交换机节点数量为1,网络拓扑见图6,parse为解析器节点,switch1为交换机节点,node1、node2、node3和node4为普通节点;这里假设采用125m的晶振,一个clock为8ns。交换机节点对收到的tt流进行广播。
148.其中普通节点和交换机节点的内部结构如图2所示,区别在于交换机节点没有流
量处理模块,普通节点和交换机节点均有id属性,该id属性有两个作用:其一是区分,其二是作为上文中数组的下标。parser为解析器节点。
149.实施步骤如下:
150.步骤1:设置好普通节点和交换机节点的id属性,将paeser的交换机节点数量配置为1,普通节点数量配置为4,交换机节点端口数量配置为4,普通节点端口数量配置为1。
151.步骤2:准备好故障配置文件和流量配置文件。其中故障语义描述形式如下:
152.以node1在0.1秒到0.5内发送tt流为例,流量配置文件形式见图7。
153.port1.can_send=false
154.&&port2.can_send=false
155.上述故障语义描述的是故障对象的端口1和端口2不能发送数据帧。以交换机在0.1-0.15秒发生静默故障为例,故障配置文件形式见图8。
156.步骤3:定义流量描述变量、流量生成函数、原子故障变量、故障描述变量、故障生成函数,其形式如下(以c 语言描述):
157.步骤3.1:流量描述变量
158.先定义流量数据结构,再定义流量描述变量,见图9。
159.步骤3.2:定义流量生成函数,见图10。
160.步骤3.3:原子故障变量
161.仅考虑接口发生故障,tte协议中的原子故障变量定义见图11,图11中的类型一列,此时数组的第二维度作为端口的索引。
162.交换机节点的第一维度大小为1,第二维度大小为4;节点第一维度大小为4,第二维度大小为1。
163.步骤3.4:故障描述变量
164.先定义故障描述数据结构,再定义故障描述变量,见图12。
165.步骤3.5:故障生成函数
166.故障生成函数根据解析器传递的参数例化出故障事件,插入到设备的故障事件列表,其流程见图13。
167.步骤4:执行仿真
168.首先,网络设备按照tte协议规定的同步流程进行协议控制帧(protocol control frame,pcf)交互,然后进入同步状态。
169.当仿真进行到0.1s时,node1发现发送tt流的时刻到达,开始按1000*clock的帧间隔周期性发送tt流,一个周期发送5次。与此同时,交换机的故障事件触发,所有端口对应的switch_port_can_send置为false,当收到来自node1的tt帧时,data_ctrl模块将之广播到所有的output模块,而output模块查验对应的switch_port_can_send的值,发现为false,将帧丢弃。所以在0.1-0.15s内,所有节点都收不到tt帧。
170.0.15s-0.5s,交换机故障恢复,将tt帧正常广播至所有节点。
171.0.5s后,node1停止产生tt流,仿真继续执行直到结束。
172.同时,本发明又提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现实施例1所述的一种适用于确定性网络协议的仿真方法。
173.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
174.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
175.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
176.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
177.以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献