带 TCP 重传的 OnOffApplication

OnOffApplication with TCP retransmission

我在做一些实验。 我使用 OnOffApplication 来生成流量。

然而情况似乎不太对。

我用 MaxBytes 发送我想要的流量。

而且交通拥堵。 所以会有一些数据包被丢弃。

而且似乎 OnOffApplication 并不关心丢弃的数据包。 (我不确定。这是我的猜测)

它只发送数据包直到达到 MaxBytes ,并不关心数据包是否收到。

我猜对了吗?

而且,如果我的猜测是正确的,那么我可以使用其他选择吗? 生成每个流具有一定大小的流量,并且必须重新传输直到接收到同一流中的所有数据包。

我的代码在下面

OnOffHelper source ("ns3::TcpSocketFactory", Address (InetSocketAddress(r_ipaddr, port)));
source.SetAttribute ("OnTime", RandomVariableValue (ConstantVariable (1)));
source.SetAttribute ("OffTime", RandomVariableValue (ConstantVariable (0)));
source.SetAttribute ("DataRate", DataRateValue (DataRate(linkBw))); 
source.SetAttribute("PacketSize",UintegerValue (packetSize));
source.SetAttribute ("MaxBytes", UintegerValue (tempsize*1000));

从应用的角度来看,OnOff只是一个包生成器。它发送具有特定特征(速率、最大数量等)的数据包。它不跟踪它们。这是设计使然。

如果您使用 TCP,则套接字将进行跟踪并确保重新传输任何丢失的段。

应用程序将根据负载生成 MaxBytes,但由于 TCP(按设计)不遵守消息边界,因此有线(或空中)传输的实际数据包可能会有所不同,因为它是一个面向字节流的协议。因此它可以将数据包或数据包段与重新传输的段等捆绑在一起