Subject: Re: [Sigtran] SCTP Heartbeat

From: Randy Stewart <[email-masked]>
Date: Fri, 28 May 2010 10:41:43 -0400

The reason is quite simple. We were quite concerned about
the internet being flooded with HB's. One proposal early on
was to send a HB every RTO. But after envisioning millions of
HB's in the big I we instead added the HB.timeout+jitter+RTO.

Now, it says one being conservative. Now could you do more, I suppose  
(I believe
its a SHOULD.. not a MUST)... That being said here is something to  
think about.

A while ago, in a past job, we put SCTP on a large machine. One of the  
tests
was to bring up 10,000 associations.. which we did.. We saw a 50% CPU  
utilization
and guess what it was? HB's being sent out in large volumes..

Now this machine did NOT have CRC32c offload.. so that could be a  
large part
of it... but its something to remember.. HB's while cool are not  
free.. they
take network bandwidth and CPU.

I have often wondered if there was not some way to collapse the  
HB's .. i.e.
when you have multiple associations to the same place if you could not  
send
one HB to the addresses between them that represented ALL associations..

Of course a HB servers two purposes:

1) Is the network path ok and whats the RTT
and
2) Is the peer app still there.

A collapse between machines could handle <1> but not <2> unless you
put lists of port numbers that were open..

Just thoughts..

R
On Mar 19, 2010, at 5:39 AM, Srinivas Murthy wrote:

> Hi Michael,
>
>
>
> Thank you for the response,
>
>
>
> As you said, and I also feel it makes more sense to send a Heartbeat  
> for every idle path every HB.timeout+RTO+jitter. But in that case  
> why is the RFC saying "Only one heartbeat should be sent" ? Is there  
> any use case for this?
>
>
>
> Regards,
>
> Srinivas Murthy
>
>
>
>
>
> -----Original Message-----
> From: Michael Tüxen [mailto:[email-masked]]
> Sent: Friday, March 19, 2010 12:36 PM
> To: Srinivas Murthy
> Cc: [email-masked]
> Subject: Re: [Sigtran] SCTP Heartbeat
>
>
>
> On Mar 19, 2010, at 7:44 AM, Srinivas Murthy wrote:
>
>
>
> > Hi,
>
> >
>
> > I have a confusion in Section 8.3 of RFC 4960.
>
> > As per the RFC it says,
>
> >    “Only one heartbeat should be sent each time the heartbeat timer
>
> >    expires (if multiple destinations are idle).  It is an  
> implementation
>
> >    decision on how to choose which of the candidate idle  
> destinations
>
> >    to heartbeat to (if more than one destination is idle).”
>
> >
>
> > Does that mean if we have an association with say 2 destination  
> addresses and both are idle, we have to send heartbeat to only one  
> of them per heartbeat interval? and as the selection is  
> implementation decision we can choose any one of them to send  
> heartbeat to.
>
> > In this case if my implementation always chooses the same  
> destination address then how will we know about the health of the  
> other destination address?
>
> Hi Srinivas,
>
>
>
> first of all: SCTP issues should be discussed on [email-masked].
>
>
>
> The intention of RFC 4960 is that all idle paths are checked. So
>
> always choosing the same idle path is a bad implementation decision.
>
>
>
> I'm also wondering if it really is a good choice to send a HB every
>
> HB.timeout+RTO+jitter. It make much more sense to do this for
>
> every idle path every HB.timeout+RTO+jitter.
>
>
>
> Best regards
>
> Michael
>
> >
>
> > Regards,
>
> > Srinivas Murthy
>
> >
>
> > _______________________________________________
>
> > Sigtran mailing list
>
> > [email-masked]
>
> > https://www.ietf.org/mailman/listinfo/sigtran
>
>
>
>
>

-----
Randall Stewart
[email-masked]

---

From: Larry Dunn <[email-masked]>
Date: Fri, 28 May 2010 09:58:35 -0500

Randall,
   Sounds reminiscent of the work RSVP folks went through
   to reduce # of keepalive packets,
   reduce # of packets on same-path (ala your "collapse" below),
   making the keepalive timing adaptive, etc.

   DIfferent situation/motivation (routers having to
   process, not just forward, those messages), but
   maybe there's something to be learned from that experience?

Best regards,
Larry
--

On May 28, 2010, at 9:41 AM, Randy Stewart wrote:

> Now, it says one being conservative. Now could you do more, I  
> suppose (I believe
> A while ago, in a past job, we put SCTP on a large machine. One of  
> the tests
> was to bring up 10,000 associations.. which we did.. We saw a 50%  
> CPU utilization
> when you have multiple associations to the same place if you could  
> not send
>> As you said, and I also feel it makes more sense to send a  
>> Heartbeat for every idle path every HB.timeout+RTO+jitter. But in  
>> that case why is the RFC saying "Only one heartbeat should be  
>> sent" ? Is there any use case for this?
>>
>>
>>
>> Regards,
>>
>> Srinivas Murthy
>>
>>
>>
>>
>>

---

From: "Brian F. G. Bidulock" <[email-masked]>
Date: Fri, 28 May 2010 10:30:29 -0600

Randy,

Maybe, like TCP's keep-alives, heartbeats should have
been set off by default?

--brian

-- 
Brian F. G. Bidulock
[email-masked]
http://www.openss7.org/

---

From: Randy Stewart <[email-masked]>
Date: Fri, 28 May 2010 15:04:20 -0400

Maybe so.. Hmm maybe I will add a switch to
make them off by default in a sysctl..

Might be worth doing..

R

-----
Randall Stewart
[email-masked]

---

From: Yoshifumi Nishida <[email-masked]>
Date: Sat, 29 May 2010 10:45:59 +0900 (JST)

Hmm.. Does that mean disabling failover function by default?

Thanks,
--
Yoshifumi Nishida
[email-masked]

From: Randy Stewart <[email-masked]>
Subject: Re: [Sigtran] SCTP Heartbeat
Date: Fri, 28 May 2010 15:04:20 -0400
Message-ID: <[email-masked]>

---

From: "Brian F. G. Bidulock" <[email-masked]>
Date: Fri, 28 May 2010 22:20:41 -0600

Yoshifumi,

No, it means you can unplug the cord and then
plug it back in without losing the association!

--brian

Yoshifumi Nishida wrote:                  (Sat, 29 May 2010 10:45:59)

-- 
Brian F. G. Bidulock
[email-masked]
http://www.openss7.org/

---

From: Ashwani Kathuria <[email-masked]>
Date: Sat, 29 May 2010 17:35:52 +0530

Hi,

I am in a bit confusion here...

As per my understanding HB timers are per destination address with
value set to "HB.Interval + RTO for that path + jitter."
If that is the true then the below statement (sec 8.3) confuses me:
"Only one heartbeat should be sent each time the heartbeat timer
expires (if multiple
destinations are idle). It is an implementation decision on how to
choose which of the candidate idle destinations to heartbeat to (if
more than one destination is idle)."

but if my understanding is wrong then the following statement which
recommends to send HB in such ways seems incorrect.

"On an idle destination address that is allowed to heartbeat, it is
recommended that a HEARTBEAT chunk is sent once per RTO of that
destination address plus the protocol parameter ’HB.interval’, with
jittering of +/- 50% of the RTO value, and exponential backoff of the
RTO if the previous HEARTBEAT is unanswered."

Please help me understand this better.

--ashwani kathuria

On Sat, May 29, 2010 at 9:50 AM, Brian F. G. Bidulock
<[email-masked]> wrote:
>>  > Maybe so.. Hmm maybe I will add a switch to
>>  > make them off by default in a sysctl..
>>  >
>>  > Might be worth doing..
>>  >
>>  > R
>>  > On May 28, 2010, at 12:30 PM, Brian F. G. Bidulock wrote:
>>  >
>>  > > Randy,
>>  > >
>>  > > Maybe, like TCP's keep-alives, heartbeats should have
>>  > > been set off by default?
>>  > >
>>  > > --brian
>>  > >
>>  > > --
>>  > > Brian F. G. Bidulock
>>  > > [email-masked]
>>  > > http://www.openss7.org/
>>  > >
>>  >
>>  > -----
>>  > Randall Stewart
>>  > [email-masked]
>>  >
>>  >
>>  >
>>  >
>
> --
> Brian F. G. Bidulock
> [email-masked]
> http://www.openss7.org/
>