You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用INET veins-5.1-i2仿真达时间阈值时生成UDP包如何解决

问题根因

OMNeT++ 中sim-time-limit参数的判定逻辑是:所有时间戳小于等于该阈值的事件都会被正常执行,只有时间戳超过阈值的事件才会被丢弃。
你当前的配置中UdpBasicApp只设置了startTime未设置stopTime,默认会持续按间隔发送报文,24s整的报文发送事件时间戳刚好等于sim-time-limit阈值,就会被正常执行,从而生成你遇到的边界异常UDP包,路由协议控制报文的异常触发逻辑同理。
你遇到的异常现象如下图:
第24秒生成了新的UDP数据包

解决方法

方案1:配置应用停止时间(首选,无需修改代码)

INET 内置的UdpBasicApp原生支持stopTime配置项,你只需要在现有omnetpp.ini的UDP配置段添加一行,将停止时间设置为略小于sim-time-limit即可:

*.node[*].app[0].stopTime = 23.999s

该配置会让所有节点的UDP应用在23.999s之后停止生成新的报文,完全避免24s整的异常包生成。
如果需要同时规避路由协议的边界控制报文,可以查阅对应路由协议的NED定义,找到控制报文发送的停止时间参数,同样设置为略小于24s即可。

方案2:调整仿真终止逻辑

如果不想修改各模块的配置,你可以直接把sim-time-limit略微调大,例如改为24.001s,后续在处理仿真统计结果时,直接过滤掉所有时间戳大于等于24s的报文即可,不会影响正常的统计结果。

方案3:全局管控发送事件(复杂场景适用)

如果你的仿真场景中有大量不定时发送报文的模块,逐个配置停止时间成本较高,可以自定义一个全局控制模块,调度一个时间戳为23.999s的事件,触发时遍历所有节点的应用、路由协议模块,取消所有待执行的发送自消息后,主动调用endSimulation()终止仿真,从根源上避免边界事件被执行。


内容的提问来源于stack exchange,提问作者Dalia Adly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 04:45:04