Subject: [Tsvwg] HEARTBEAT failure

From: "Buraga, Partha S" <[email-masked]>
Date: Thu, 18 Apr 2002 22:45:37 -0700

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. 

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. 

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

_______________________________________________
tsvwg mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/tsvwg

---

From: Arun Prasad <[email-masked]>
Date: Fri, 19 Apr 2002 11:56:48 +0530

Hi Partha,

> 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...

> 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???

Thanks
-arun

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

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