Subject: Association initialization & retrans counters

From: [email-masked]
Date: Tue, 25 Sep 2007 12:57:41 +0200 (CEST)

Hello,

I have question related to association initialization when the destination is multihomed.
I'm not sure if my understanding of 3 rfc2960's retrans counters (Path.Max.Retrans, Max.Init.Retransmits, Association.Max.Retrans) is correct.
Below is meta code of function that is called when Init Timer (t1) expires.

InitTimerHandler() {
  assocRetransCount++;
  primaryAddress->retransCount++;
  
  if (primaryAddress->retransCount > Path.Max.Retrans) {
    mark primaryAddress as failed;
    primaryAddress = findAnotherActiveDestination();
    if (primaryAddress == NULL) {
      close association;
    }
  }
  
  if (assocRetransCount > Max.Init.Retransmits) {
    close association;
  }
  
  if (assocRetransCount > Association.Max.Retrans) {
    close association;
  }
  
  adjust init timeout;
  send init chunk to primaryAddress;
  start init timer;
}

Max.Init.Retransmits should be smaller than Association.Max.Retrans, so checking 'assocRetransCount > Association.Max.Retrans' is not probably necessary, but just to be on the safe side :-)
My question is: Is above suggested checking of Path.Max.Retrans and Max.Init.Retransmits limits in combination with multihomed destination correct? Didn't I miss anything?
Thank you very much in advance for any comments.

Regards,
Petr

---

From: Vlad Yasevich <[email-masked]>
Date: Tue, 25 Sep 2007 09:29:57 -0400

>     if (primaryAddress == NULL) {

This is very conservative.  You might want to continue probing
until Max.Init.Retransmits.

>   if (assocRetransCount > Max.Init.Retransmits) {

You may want to check this before checking the Path.Max.Retrans.
If Max.Init.Retransmits is exceeded, you should close the association.

>   if (assocRetransCount > Association.Max.Retrans) {

You don't need this check.  Init/Cookie-echo retransmissions are bounded by
Max.Init.Retransmits.  Other retransmissions (DATA, HB, etc..) are bounded
by Association.Max.Retrans

-vlad

---

From: Randall Stewart <[email-masked]>
Date: Thu, 27 Sep 2007 18:09:06 -0400

Vlad Yasevich wrote:
>> I'm not sure if my understanding of 3 rfc2960's retrans counters 
>> (Path.Max.Retrans, Max.Init.Retransmits, Association.Max.Retrans) is 
>> correct.

I agree, It is allowed to "close the association" but BSD
never does this.. we go into the "dormant" state.. but
in this case we would continue sending INIT's
> by Association.Max.Retrans

Yep.. Agree 100% :-)

R
>> Max.Init.Retransmits should be smaller than Association.Max.Retrans, 
>> so checking 'assocRetransCount > Association.Max.Retrans' is not 
>> probably necessary, but just to be on the safe side :-)
>> My question is: Is above suggested checking of Path.Max.Retrans and 
>> Max.Init.Retransmits limits in combination with multihomed destination 
>> correct? Didn't I miss anything?

-- 
Randall Stewart
NSSTG - Cisco Systems Inc.
803-345-0369 <or> 803-317-4952 (cell)