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

创建两个ns-3 BulkSendApplication时node_2->node_3无流量问题求助

Troubleshooting ns-3 BulkSend Application: No Traffic from node_2 to node_3

Let's break down the possible issues that could be causing the missing traffic between node_2 and node_3, even though your code structure matches the working node_0→node_1 flow:

1. Verify Node Connectivity & IP Configuration

The most common culprit here is a broken network path or incorrect IP setup between node_2 and node_3.

  • First, confirm the two nodes are linked with a valid network channel (e.g., PointToPointHelper, CsmaHelper) and their network interfaces have been assigned reachable IPv4 addresses.
  • You can add a quick Ping test to validate connectivity before your BulkSend applications:
    // Get node_3's IPv4 address (adjust interface index 1 to match your topology)
    Ipv4Address node3Ip = node_3->GetObject<Ipv4>()->GetAddress(1, 0).GetLocal();
    V4PingHelper pingHelper(node3Ip);
    ApplicationContainer pingApps = pingHelper.Install(node_2);
    pingApps.Start(MilliSeconds(100));
    pingApps.Stop(MilliSeconds(1000));
    

If the Ping fails, you'll need to fix your topology setup (e.g., missing links, incorrect subnet assignments, or missing routes for cross-subnet communication).

2. Explicitly Specify Target IP Address Instead of Node Pointer

While ns-3 allows passing a Node pointer to InetSocketAddress, it automatically uses the node's first IPv4 address—which might not be the correct one if your node has multiple interfaces. To eliminate ambiguity, explicitly use the target node's IP:

// node_2 to node_3 (corrected target address)
uint16_t rcv_port2 = 50001;
// Get node_3's correct IPv4 address
Ipv4Address node3Ip = node_3->GetObject<Ipv4>()->GetAddress(1, 0).GetLocal();

PacketSinkHelper sink2 ("ns3::TcpSocketFactory", Address (InetSocketAddress (Ipv4Address::GetAny (), rcv_port2)));
ApplicationContainer sinkApps2 = sink2.Install (node_3);
sinkApps2.Start (MilliSeconds (0));
sinkApps2.Stop (MilliSeconds (start_sending_traffic + traffic_duration));

// Use explicit IP for BulkSend target
BulkSendHelper source2 ( "ns3::TcpSocketFactory", Address (InetSocketAddress (node3Ip, rcv_port2)));
source2.SetAttribute ("MaxBytes", UintegerValue (0));
ApplicationContainer sourceApps2 = source2.Install (node_2);
sourceApps2.Start (MilliSeconds (start_sending_traffic));
sourceApps2.Stop (MilliSeconds (start_sending_traffic + traffic_duration));

3. Double-Check for Code Typos

While you mentioned node_0→node_1 works, I noticed a typo in your provided code for the first flow:

// This should be source1.SetAttribute, not source.SetAttribute
source.SetAttribute ("MaxBytes", UintegerValue (0));

If this was a copy-paste error in your question, great—but ensure your second flow doesn't have a similar typo (e.g., accidentally using source instead of source2).

4. Validate Simulation Timing

Confirm that:

  • start_sending_traffic is a positive value less than your simulation's total run time
  • start_sending_traffic + traffic_duration doesn't exceed the simulation's stop time
    If your simulation ends before the second flow starts, you'll see zero received bytes.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 10:17:31