Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Statistics 'macCellThroughput(D2D|Ul|Dl)' use static member for total byte count producing overflow and wrong data in multi basestation scenarios #187

Open
stefanSchuhbaeck opened this issue Nov 13, 2023 · 0 comments

Comments

@stefanSchuhbaeck
Copy link

The statistics are defined in LteMac.ned

        @signal[macCellThroughputUl];
        @statistic[macCellThroughputUl](title="Cell Throughput at the MAC layer UL"; unit="Bps"; source="macCellThroughputUl"; record=mean);
        @signal[macCellThroughputDl];
        @statistic[macCellThroughputDl](title="Cell Throughput at the MAC layer DL"; unit="Bps"; source="macCellThroughputDl"; record=mean);
        @signal[macCellThroughputD2D];
        @statistic[macCellThroughputD2D](title="Cell Throughput at the MAC layer D2D"; unit="Bps"; source="macCellThroughputD2D"; record=mean); 

The recording of the statistics takes place the extractCorrectPdus method of the respective HarqBuffer ( normal or
d2d enabled case). The cell throughput is calculated by dividing the total amount of bytes received by the total amount of elapsed time.

The problem is that totalCellRcvdBytes_ is a static unsigned int. See LteHarqBufferRx .

  • This means if multiple eNB's/gNB's are simulated, they will add up their received total.
  • The variable can only hold 2^32 which is easily read when all eNB's/gNB's write to the same variable.

Possible fix.

Use INET ThroughputFilter result filter implementation.
See for instance the ActivePacketSourceBase module of the INET queuing API. Here the throughput is calculated
by the ThroughputFilter using statistics and result filter tools provided by OMNeT. It also allows to configure the
interval length using ini files on a simulation by simulation basis.

@statistic[dataRate](title="data rate"; source=throughput(packetPushed); record=vector; unit=bps; interpolationmode=linear);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant