ES模块
1. AFDXMessagesource模块
是queueing::source的派生类
实现功能:①派生类的createjob函数覆盖基类的createjob函数
②createjob函数生成一个AFDXMessage类型的消息,消息中含有virtualLinkId(在ini文件中为intuniform(0,3))
2.RegulatorLogic模块
实现功能:流量整形,同一VL的两相邻帧间隔时间>BAG
3.RedundancyController模块
实现功能:①首先设置消息的seqNum从0开始,按顺序加1
②设置消息的InterfaceId,A链路为1,B 链路为2
3.txQueue PassiveQueue模块
实现功能:①按照队列是堆或栈,发送消息
②按照发送算法优先级、轮询等发送消息
4.MAC模块
实现功能:①作为发送端,设置帧长度+8,发送消息至链路
②作为接收端,设置帧长度-8,接收消息并发送至integritychecker
③添加MAC约束,设置帧间隔IFG
5.IntegrityChecker模块
实现功能:①去除顺序号重复的帧expectedSeqNum = currSeqNum + 1
②增强鲁棒性 expectedSeqNum = currSeqNum + 2
6.RedundancyChecker模块
实现功能:①按顺序接收帧
②大于SKEW MAX的帧都会被保留,复位时间大于skew max
switch模块(分了两部分,switchPort、switchFabric)
switchPort中mac模块同上
1.FrameFilter模块
实现功能:检验接收帧的大小是否在Lmax、Lmin之间
在自己编写的这部分程序中,原本使用的getModuleBypath("^.^.^.ES0.RegulatorLogic")获得Lmax、Lmin的参数,但这样做的问题就是一旦修改ES0的名字,程序就崩溃了。这也是我返回来重新梳理这个程序的原因。
omnet报错:Simulation terminated with exit code: -1073741819(而且没有的debug,错误在哪里,我看到网上有人说这种错误代码也可能是数组索引越界的问题)
2.TrafficPolicy模块
实现功能:流量管制算法,AC以Lmax/BAG的速度增长
omnet:在ini文件中,jitter单位为1ms,若在ned文件中定义double jitter @unit(s),则.cc程序中实际存储jitter值为0.001
switchFabric模块
1.Classifier模块
实现功能:根据帧的kind,获得输出门 (0->high queue,1->low queue)
INFO:priorityclassifer kindname1
INFO:className:afdx::AFDXMessage
INFO:fullName:
INFO:fullPath:simpleAFDXExampleNetwork.switchA.switchFabric.priorityClassifier.
INFO:info:len=128B src=simpleAFDXExampleNetwork.switchA.switchPort[0].trafficPolicy (id=35) dest=simpleAFDXExampleNetwork.switchA.switchFabric.priorityClassifier (id=130)
INFO:name:
INFO:owner:
INFO:schedulingPriority:0
INFO:targetObject:
INFO:isScheduled:false
INFO:arrivalTime:1.00001088s
INFO:id:33
INFO:treeId:33
INFO:kind:0
INFO:displayString:
INFO:controlInfo:
INFO:parList:
INFO:isSelfMessage:false
INFO:creationTime:1s
INFO:sendingTime:1.00001088s
INFO:timestamp:1.00001088s
INFO:senderModuleId:35
INFO:senderGateId:3
INFO:senderModule:
INFO:senderGate:
INFO:arrivalModuleId:130
INFO:arrivalGateId:1048576
INFO:arrivalModule:
INFO:arrivalGate:
INFO:bitLength:1024
INFO:byteLength:128
INFO:hasBitError:false
INFO:encapsulatedPacket:
INFO:isReceptionStart:false
INFO:duration:0s
INFO:priority:1
INFO:totalQueueingTime:0s
INFO:totalServiceTime:0s
INFO:totalDelayTime:0s
INFO:queueCount:0
INFO:delayCount:0
INFO:generation:0
INFO:networkId:0
INFO:equipmentId:0
INFO:interfaceId:1
INFO:virtualLinkId:1
INFO:seqNum:0
INFO:partitionId:0
INFO:udpSrcPort:1234
INFO:udpDestPort:5678
INFO:priprity classifer kind result0
2.high queue、low queue模块同passive queue 模块
3.schedueler模块同server模块
4.router模块
实现功能:虚拟链路ID+1或-1门,待完善
passivequeue、server模块
1.passivequeue模块
实现功能:如果server为空,直接发送帧;server非空,将帧插入队列
2.server模块
实现功能:接收queue发来的帧,且根据算法request前面的队列给其发帧