我刚开始阅读ns3的源代码。我从first.cc示例开始,然后在发送数据包之后进入udp-echo-client.cc -> ipv4 4-原始套接字- -> ipv4 4-interface.cc ->流量控制层。
我发现上层在事件处理过程中直接调用下层的发送方法,而不是调度另一个事件。那么ns3如何在协议层内实现处理延迟呢?例如,UDP层在将数据包发送到IP层之前接受10 to的处理。
对不起,如果我的问题是愚蠢的。任何指向正确的方向来理解ns3设计将不胜感激。
发布于 2022-10-12 14:13:02
通常,ns-3不为发送/接收/转发数据包的处理延迟建模.有一些例外,如LTE/NR系统中的MAC到PHY延迟,以及一些专门的模型,如DOCSIS,但TCP/IP堆栈和Wi没有内置的可配置处理延迟能力。
但是,可以将处理延迟插入到许多模型中,方法是将接收堆栈中的相关点定位为接收堆栈中的相关点,并将直接方法调用重构为调度的(具有延迟的)调用。例如,要在UDP接收路径中插入处理延迟,可以使用如下语句:
(*endPoint)->ForwardUp(packet->Copy(), header, udpHeader.GetSourcePort(), interface);并将其包装在一个方法中,如:
Simulator::Schedule (MicroSeconds (10), &UdpL4Protocol::ForwardUpAfterDelay, this, packet->Copy (), header, udpHeader.GetSourcePort ());此外,将10 us的神奇数字更改为可配置的时间属性。
https://stackoverflow.com/questions/74036384
复制相似问题