[hipl-dev] Re: [Branch ~hipl-core/hipl/trunk] Rev 6088: fix long handover delays in case locators are unreachable for responder

  • From: David Martin <david.martin.mailbox@xxxxxxxxxxxxxx>
  • To: hipl-dev@xxxxxxxxxxxxx
  • Date: Fri, 14 Oct 2011 11:29:24 +0200

Hi,

On Thu, Oct 13, 2011 at 11:19 AM,  <noreply@xxxxxxxxxxxxx> wrote:
> ------------------------------------------------------------
> revno: 6088
> committer: Rene Hummen <rene.hummen@xxxxxxxxxxxxxxxxx>

>  In some situations, the network stack of the responder cannot deliver
>  HIP UPDATE messages to the signaled locators. In this case, sendto()
>  returns a length != packet_length. Until now, HIPL tried three times
>  to send undeliverable packets with a timeout of 2 seconds each. As the
>  hipd is single-threaded, this caused a delay of 4+ seconds per
>  undeliverable locator.
>  HIPL also implements a retransmission mechanisms (for UPDATEs).
>  Undeliverable packets are handled there as well. Hence, I removed the
>  intrusive special handling for the case where the network stack reports
>  an error. This fixes the problem of overly long handovers.

a problem may be that per host association only the last sent packet is cached
for retransmission. So when you send two locators and the first one fails, the
failed one will never be retransmitted as the cache is overwritten by
the second one.
At least that's how I understand it works in HIPL. The respective code is in the
same function as well, see the call to hip_queue_packet() in line 1300ff. in
hip_send_raw_from_one_src() in hipd/output.c.

David

Other related posts: