ttory wrote:
Thank you Alexandre :)

After reading your reply, I immediately installed Wireshark program.

And I can confirm this.
Some reply packet's sequence number included ICMP header is same.
Is this uIP's bug?
Before 5 hours, I let remote PC request ICMP to AVR host. But no reply.
But now I can see reply on the PC monitor.
But that is similar in situation "50% loss"
I think internet line is not responsible for it. Because If I let remote PC request ICMP to my local PC, it gave me perfect reply with 0% loss. Um... so lonely winter...

I have uip working over a serial line. despite quite high ping times, it works flawlessly for hours with 0% loss and no dups. I also tried it's demo on unix and it "pongs" ok.

I suspect there's a bug on your looping scheme, have you deviated from uip's demos?

Perhaps your ethernet device has a ring-buffer, and when uip gots notified of an incoming frame, it reads from a fixed location on that buffer? If that's the case for the first position on the buffer, it would have the effect of uip replying correct to the first packet, but when the other(s) arrive, the ethernet controller won't put it on the same position, so uip will read the old packet and reply to it again. See if your wireshark logs shows something like:

- icmp echo request with sequence number x
- icmp echo reply with sequence number x

- icmp echo request with sequence number x+1
- icmp echo reply with sequence number x

- icmp echo request with sequence number x+2
- icmp echo reply with sequence number x+2

.. or something. If I tough of it correctly, that would mean that you have space for two packets on the ethernet controller buffer (two slots), but uip (or more correctly, your ethernet "driver") is only reading from the first one.Something like that would get you close to 50% dups, computed as losses, as in your example ...

- Alexandre


Reply via email to