I've been tweaking ns 3 for the purpose of my research. I'm working on Multiuser MIMO which enables an Access Point to transmit to multiple stations simultaneously instead of just one at a time as in case of single antenna systems. In order to simulate this, I've written my own module and added it to the source folder in ns 3 using the steps described here:
https://www.nsnam.org/docs/manual/html/new-modules.htmlThere are essentially two aspects of this simulation: one for the downlink wherein the Access Point transmits to the Stations and the other is the uplink in which case the stations transmit to the Access Point. The downlink is multi-user MIMO based whereas the uplink is based on contention as in case of wifi. I've tested this module for open loop traffic simulations for both uplink and downlink (individually and together) and the results I have obtained are as expected which confirms that the module works properly. I have also verified my belief regarding the proper working of this module by looking at the ns log and printing out the output of the individual net device and channel classes in my module.
However, one of the problems I've faced are in case of TCP simulations. It seems that TCP window size never increases much. I believe that the TCP window size remains low as the Access Point receives around 2-3 packets in a single burst for transmission from higher layers (here burst refers to packets whose timestamps are pretty close) so I'm guessing that TCP's window size also remains around the same value. Now, for TCP there is a data packet that gets sent to the station (receiver) and to that the station responds with a TCP ACK.
I have the following questions:
1. What is the size of TCP ACK in ns 3? I can see that my Access Point (net device) receives packet of size 46 bytes on the uplink. My initial guess was that these are Arp packets. So I ran the UdpEchoServer/ Client application for 10 seconds before starting my actual simulation to make sure that the Arp packets were not transmitted during the simulation (also the echo server/client application worked fine so there should be no arp atleast in the first few seconds of the simulation. I have not changed the Arp settings of ns 3 in any way). However, given the frequency with which these packets are being received on the uplink, I'm inclined to believe that they are TCP ACKs rather than the Arp packets. Also, the packet sink on the station (receiver) reports receiving the DATA packet and the packet received on the uplink looks like a response to the DATA packet so should be a TCP ACK.
2. How do I find out if the TCP ACK is being received by the higher layers? I can see that the ACK is being received and passed to higher layers by using the receive callback but I'm facing difficulty tracing where it gets dropped/rejected and why. I understand that enabling logging for all log components for all ns 3 modules would give me the answer, but it would make my analysis too painful. So I was wondering if there was an easier way.
Thank you.