[ipxe-devel] [PATCH] [tcp] Send keepalive packets to prevent TCP stalls

Ladi Prosek lprosek at redhat.com
Mon Jun 13 10:27:16 UTC 2016


On Mon, Jun 13, 2016 at 11:04 AM, Michael Brown <mcb30 at ipxe.org> wrote:
> On 13/06/16 08:33, Ladi Prosek wrote:
>>>
>>> Could you try out
>>>
>>>
>>> http://git.ipxe.org/people/mcb30/ipxe.git/shortlog/refs/heads/keepalive
>>>
>>> and let me know if it has any issues?
>>
>>
>> Thanks! This branch seems to have an unrelated issue, imgfetch fails
>> with "No space left on device" so I tested your commit on top of
>> ipxe/master.
>
>
> That's bizarre, since that branch _was_ only a single commit on top of the
> current ipxe/master.

External heap grows downwards from 4000000 (size 3f00000)
on the keepalive branch vs.
External heap grows downwards from 7fef5000 (size 7fdf5000)
on ipxe/master with the exact same VM with 2 gigs of memory. I'll take
a closer look.

>> +       /* Hold off (or start) the keepalive timer, if applicable */
>> +       if ( ! ( tcp->tcp_state & TCP_STATE_SENT ( TCP_FIN ) ) )
>> +               start_timer_fixed ( &tcp->keepalive, TCP_KEEPALIVE_DELAY
>> );
>> +
>>
>> I'm curious if it's intentional that this is done only for ack_len >
>> 0. With this logic a keepalive packet is sent every 15 seconds during
>> long-running downloads even if the download is progressing just fine.
>
>
> No, that was an accident.  Now (hopefully) fixed and pushed to master:
>
>   http://git.ipxe.org/ipxe.git/commitdiff/188789e

Thanks!



More information about the ipxe-devel mailing list