Skip to content

Receive of last packet of a network broadcast may be skipped #3

@jpnz0000

Description

@jpnz0000

Hello, I have enjoyed using this emulator specifically the IF1 network emulation

I have observed an intermittent issue with both Windows and Linux builds of spectrusty (SDL2_SPECTRUSTY_Example 0.4.0) when sometimes the last packet of a network broadcast is skipped during receive

As an example I am saving 6912 bytes via network broadcast, with:

SAVE *"n";0 CODE 0,6192

And loading with:

LOAD *"n";0 CODE SCREEN$

The station is still receiving and the final 36 bytes are missing:

Image

Having captured the packets being sent, and running through tshark the last (short) packet may be sent too quickly for the emulated ZX network to deal with:

tshark -r zxnet-6912.pcap
    1   0.000000    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
    2   0.118549    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
    3   0.237582    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
    4   0.337411    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
    5   0.461655    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
    6   0.559056    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
    7   0.657588    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
    8   0.776284    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
    9   0.877747    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
   10   0.997086    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
   11   1.096138    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
   12   1.236198    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
   13   1.336247    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
   14   1.458660    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
   15   1.556984    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
   16   1.675510    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
   17   1.775420    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
   18   1.875999    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
   19   1.995310    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
   20   2.096440    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
   21   2.214540    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
   22   2.314427    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
   23   2.438264    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
   24   2.534287    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
   25   2.653612    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
   26   2.755173    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
   27   2.855229    127.0.0.1 → 127.0.0.1    UDP 311 40774 → 30000 Len=269
   28   2.913478    127.0.0.1 → 127.0.0.1    UDP 92 40774 → 30000 Len=50

If I replay the packet capture with udpreplay and a 100 ms delay between packets then the full 6912 bytes are received:

udpreplay -i lo -c 100 zxnet-6912.pcap

Image

The delay for the last packet is now greater:

tshark -r udpreplay-zxnet-6912.pcap
    1   0.000000    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
    2   0.099964    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
    3   0.200050    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
    4   0.300087    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
    5   0.400163    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
    6   0.500014    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
    7   0.600070    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
    8   0.700025    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
    9   0.800010    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
   10   0.900069    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
   11   1.000013    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
   12   1.099931    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
   13   1.200119    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
   14   1.300225    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
   15   1.400211    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
   16   1.500002    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
   17   1.600113    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
   18   1.700119    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
   19   1.800034    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
   20   1.899975    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
   21   2.000089    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
   22   2.100039    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
   23   2.199944    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
   24   2.299983    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
   25   2.400080    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
   26   2.499964    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
   27   2.599936    127.0.0.1 → 127.0.0.1    UDP 311 51831 → 30000 Len=269
   28   2.701078    127.0.0.1 → 127.0.0.1    UDP 92 51831 → 30000 Len=50

Thank you

udpreplay-zxnet-6912.pcap.gz
zxnet-6912.pcap.gz

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions