Subject: [Tsvwg] RE: HEARTBEAT failure

From: "Buraga, Partha S" <[email-masked]>
Date: Thu, 18 Apr 2002 23:44:56 -0700

Hi 
 
Here is my response inline.

-----Original Message-----
From: Arun Prasad [mailto:[email-masked]]
Sent: Friday, April 19, 2002 11:57 AM
To: Buraga, Partha S
Cc: [email-masked]'; [email-masked]'; [email-masked]';
'Andreas Jungmaier'
Subject: Re: HEARTBEAT failure

Hi Partha, 

"Buraga, Partha S" wrote: 

Hi 

In multihoming scenario,  a node has got three addresses x,y,z. In which,  x

-- address ( NIC ) was failed. 

Application ( user of SCTP ) specifies the source address -- x,  for an 
outgoing HEARTBEAT chunk. Tho address -- x was failed, kernel deliver the 
packet to the destination thro interface y or z. 

    Just a clarification here.....  The User of SCTP can specify only the
Destination Address 
to which Heartbeat is to be sent not the source address..... The source
address (which is 
filled in the IP header by SCTP... And IP in no way cares this setting in IP
header, it sends 
the Packet out through  the NIC card, which its routing table suggests...)
will be filled by 
SCTP before giving the packet to IP... 

But, when the HEARTBEAT - ACK responded by the peer, lands at interface -- 
x, it will fail. And after ' n ' number of retries, Association will fail. 

    Yes, this is definitely a problem.....  The algorithm we used to
overcome this is.... 
I'll take the same example with three address x,y,z 

Nbr_Addr = 3       (x,y,z) 
Current source address ( Cur_Saddr) =  x        ie., the source address to
be filled in IP_HDR 
Maximum Retransmission Count (MAX_RTX_CNT) = 9 
HB_RTX_THRSH =  MAX_RTX_CNT / Nbr_Addr 
                              =  9 / 3 = 3 

 Now whenever the Heartbeat timer expires (ie., when the RtxCounter is
increased) 
*RtxCntr ++ 
* Hb_RxtCntr++ 
* if (Hb_RtxCntr >= HB_RTX_THRSH) 
      Cur_Saddr = NEXT_ADDR (Cur_Saddr)          ie., the next address which
will be "y" 
       Hb_RtxCntr = 0 

    The logic is to try all the source address (from the pool we have)
within the 'n' number of 
retries....  This way, if the problem is with the source address by which we
are sending, it 
can be rectified.... The main purpose of sending HeartBeat, is to check
whether the 
remote interface is proper or not... So no harm changing the source
address.... 

******* Another important point is that, if the implementation is not kernel
based ..... then 
some implementation of IP stack, can overwrite the Source Address filled by
SCTP.... 
In that case... the above algo, doesnt have any effect... 

Is the solution OK???  

[Buraga, Partha S]  

I am working on User lever SCTP. Not kernel based.

One issue, with your reply that, you said as IP stack, can overwrite the
Source address filled by SCTP. But, this should not happen in IPV6 case.
Becas, drafts says, Application should have control on Source address and
Destination address of the packet. 

 [Buraga, Partha S] I have one Doubt, Will Kernel always selects a Source
address of the NIC, which is active ? 

thanks
partha 

Thanks 
-arun 

If this is the case, how can we establish association with the peer. I feel,

this problem will araise when we specify source address to the outgoing 
chunk. If not, With IP_ANY, kernel can choose the address and association 
could be established. 

Can you please look into this and reply back. 

thanks in advance 
partha

-- 
**************************************************************** 
V.Arun Prasad 
HCL Technologies Ltd. 
51, Jawaharlal Nehru Road, 
Ekkattuthangal, 
Guindy Industrial Estate, 
Chennai - 600097. 

Contact # : 9144 - 2334174 
            9144 - 2334181 
            extn : 233 
****************************************************************