ns-3仿真_wifi发送链路简单解析
ns3的官方手册很全,相关书籍也是有的,官网先贴在这里:
ns-3 | a discrete-event network simulator for internet systemsa discrete-event network simulator for internet systemshttps://www.nsnam.org/相关的脚本介绍也都有一些:
ns-3.35_wifi-he-network.cc_ns-3网络仿真工具wifi脚本解析_wifi脚本网络拓扑_ns-3wifi6吞吐脚本关键注释_吞吐部分_基础ns-3_ns3.35-CSDN博客
ns-3-model-library wifi 浅析_ns-3wifi部分解析_ns-3网络模拟器wifi部分文档分析_Part1_ns3 wifiphy物理层冲突-CSDN博客
ns-3-model-library wifi 浅析_ns-3wifi部分解析_ns-3网络模拟器wifi部分文档分析_Part2_yansphy-CSDN博客
在进行wifi仿真的时候,我们偶尔会因为网络结构复杂,找不到数据包如何逐级下发上传,所以我单独建立了一个很简单的网络,网络拓扑如下:
positionAlloc->Add (Vector (0.0, 0.0, 0.0)); // AP1positionAlloc->Add (Vector (20.0, 0.0, 0.0)); // AP2positionAlloc->Add (Vector (10.0, 0.0, 0.0)); // STA
只看AP1和STA的数据交换,STA的NodeID是0,AP1的NodeID是1,以下是传输的log
+3.300000000s 0 UdpClient:Send(0x61ce9c70d9f0)
+3.300000000s 0 Ipv4L3Protocol:SourceAddressSelection(0x61ce9c807680, 1, " ", 192.168.1.0)
+3.300000000s 0 Ipv4L3Protocol:Send(0x61ce9c807680, 0x61ce9c80c4b0, 192.168.1.2, 192.168.1.1, 17, 0x61ce9c6b1500)
+3.300000000s 0 Ipv4L3Protocol:BuildHeader(0x61ce9c807680, 192.168.1.2, 192.168.1.1, 17, 1480, 64, 0, 1)
+3.300000000s 0 Ipv4L3Protocol:Send(): [LOGIC] Ipv4L3Protocol::Send case 1b: passed in with route and valid gateway
+3.300000000s 0 Ipv4L3Protocol:SendRealOut(0x61ce9c807680, 0x61ce9c6b1500, 0x61ce9c745e00, 0x7ffc95366f08)
+3.300000000s 0 Ipv4L3Protocol:SendRealOut(): [LOGIC] Send via NetDevice ifIndex 0 ipv4InterfaceIndex 1
+3.300000000s 0 Ipv4L3Protocol:SendRealOut(): [LOGIC] Send to destination 192.168.1.1
+3.300000000s 0 WifiMac:Enqueue(0x61ce9c7e4750, 0x61ce9c745e00, 00:00:00:00:00:02)
+3.300000000s 0 WifiMac:Enqueue(0x61ce9c7e4750, 0x61ce9c745e00, 00:00:00:00:00:02, 00:00:00:00:00:01)
+3.300000000s 0 WifiMac:Enqueue(0x61ce9c7e4750, 0x61ce9c745e00, 00:00:00:00:00:02, 00:00:00:00:00:01, 0)
+3.300000000s 0 UdpClient:Send(): [INFO ] TraceDelay TX 1472 bytes to 192.168.1.1:9 Uid: 368 Time: +3.3s
+3.300240066s 1 WifiMac:ForwardUp(0x61ce9c7ef100, 0x61ce9c745e00, 00:00:00:00:00:01, 00:00:00:00:00:02)
+3.300240066s 1 Ipv4L3Protocol:Receive(0x61ce9c800fa0, 0x61ce9c61bbd0, 0x61ce9c7e4680, 2048, 06-06-00:00:00:00:00:01, 06-06-00:00:00:00:00:02, 0)
+3.300240066s 1 Ipv4L3Protocol:Receive(): [LOGIC] Packet from 06-06-00:00:00:00:00:01 received on node 1
+3.300240066s 1 Ipv4L3Protocol:IsDestinationAddress(): [LOGIC] For me (destination 192.168.1.1 match)
+3.300240066s 1 Ipv4L3Protocol:LocalDeliver(0x61ce9c800fa0, 0x61ce9c814470, 0x7ffc95365528, 1)
+3.300240066s 1 UdpServer:HandleRead(0x61ce9c7ec870, 0x61ce9c81a0b0)
+3.300240066s 1 UdpServer:HandleRead(): [INFO ] TraceDelay: RX 1472 bytes from 192.168.1.2 Sequence Number: 23 Uid: 368 TXtime: +3.3e+09ns RXtime: +3.30024e+09ns Delay: +240066ns
可以看到UDP先发,数据包到达IP,数据包进入MAC,Enqueue后FowardUP,再IP,最终到UDPserver。