lwip-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lwip-devel] [bug #34427] In RAW/NO_SYS mode, tcp_output may send out la


From: Min Xu
Subject: [lwip-devel] [bug #34427] In RAW/NO_SYS mode, tcp_output may send out large number of ARQ REQ if destination ARP entry has expired
Date: Thu, 29 Sep 2011 21:03:17 +0000
User-agent: Mozilla/5.0 (Windows NT 5.1; rv:7.0) Gecko/20100101 Firefox/7.0

Follow-up Comment #3, bug #34427 (project lwip):

I ran a test with arp queuing turned on (ETHARP_TRUST_IP_MAC = 0, ARP_QUEUEING
= 1), it doesn't appear to resolve the issue of single vs multiple ARP. 
However, it does behave differently in that immediately after the ARP flood,
the sequence is continuous from the last transmission by the DSP (before ARP
flood, desktop relative-ACKd 10221, after ARP flood, DSP started transmit at
10221).   BUT.. after a short while, the DSP jumped a bunch of sequence number
(at packet 141 in the attached pcap file), skipping 17520 bytes (12 packets of
1460 byte payload)...   I didn't observe this issue in the build where ARP
QUEUING is turned off.

As a side note, the DSP main loop polls the drive receive function (to see if
there are packets already received by DMA/Interrupt) with a priority of 4096
-- it polls the receive function 4096 times, until the polling function
returns false, indicating there are no packets [whole or broken..].  So if the
LwIP stack spends a lot of time in the tcp_output routine (to write out to the
ethernet, arp or tcp packets) it won't be able to processing incoming ARP
response and/or ACK / DupACK messages until it's done.  So for performance
reason, I think if it will send out ARP REQ for each of the packet that it
will build, calculate crc etc for, it's better to return early and let the
receive function run for a little while, that's why I think having
tcp_segment_output forward the transmit status of ERR_ARPREQ would probably be
a sufficient solution, but I do agree further limiting the ARP REQ going out
will help, perhaps by having a different meaning to the age field in ARP
table, one nibble being a timer count, one being an "age" count...



    _______________________________________________________

Reply to this item at:

  <http://savannah.nongnu.org/bugs/?34427>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.nongnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]