Subject: KeepActive processing

From: "Griffeth, Nancy D (Nancy)" <[email-masked]>
Date: Tue, 2 Jan 2001 21:15:39 -0500

Hi, all,

I am editing an SDL specification for Megaco, and have been finding the
KeepActive processing quite elusive.
One day I have it pinned down, and then a week or a month later I find a
hole.  I am attaching a most careful summary
of a very literal reading of the spec (quoted in blue), but I'm not
convinced that this reflects the real intent.
I would be very grateful for feedback from those of you who really
understand the purpose of the KeepActive processing.

What bothers me most is the sequential signal list processing.  According to
the spec, a sequential signal list
in a new signals descriptor is ignored if it has the same signal list id as
an active sequential signal list.  If we
take the H.248/RFC3015 spec literally, KeepActive processing has nothing to
do with it. On the other hand, the
sentence involving sequential signal lists occurs in a paragraph discussing
the use of the KeepActive flag, so
perhaps there's an implicit assumption that the statement about sequential
signal lists applies only if the KeepActive
flag is true.  If that's the case, then how do we determine the value of the
KeepActive
flag for a sequential signal list?  Is it the KeepActive flag of the first
signal in the list?

A second issue concerns me somewhat less, since there was a pretty clear
conclusion about it on the mailing list.
There may be an ambiguity concerning which KeepActive flag to examine, the
one that appears in the replacement signals
descriptor or the one for the active signal.  Consistent with the mailing
list discussion (exchange on signal lists
between Sandeep Gautam and Tom Taylor on Nov 2, 2000), I am assuming that
the gateway forgets the
KeepActive flag from a signals descriptor after processing the signals
descriptor,
and the only KeepActive flags around are in the replacement descriptor -
there are no KeepActive
flags for active signals.

But relying on the above discussion brings back the first issue, because
partly the discussion concerns the
impact of the KeepActive flag on processing signal lists.

Summary of KeepActive Processing
There are two cases when signals may be stopped, and therefore KeepActive
processing may come into play.
One is when a new event arrives; the other is when a new signals descriptor
is being processed.
Case 1.  A new event arrives (see Section 7.1.9)

        Case 1a. KeepActive flag is false & no embedded signals descriptor
present
                Stop all active signals
                                Quote from spec: "Normally, recognition of
an event shall cause any active signals to stop"

        Case 1b. KeepActive flag is true        & no embedded signals
descriptor present
                Don't stop any active signal
                                Quote from spec: "When KeepActive is
specified in the event, the MG shall not interrupt any
                                signals active on the Termination on which
the event is detected."

        Case 1c. KeepActive flag is false & embedded signals descriptor is
present
                Signals descriptor determines fate of active signals (see
below)
                                Quote from spec: "An event can include an
Embedded Signals descriptor and/or an Embedded
                                Events Descriptor which, if present,
replaces the current Signals/Events
                                descriptor when the event is recognized."

        Case 1d. KeepActive flag is true & embedded signals descriptor is
present
                Not allowed
                                Quote from spec: "A media gateway controller
shall not send EventsDescriptors with an event both
                                marked KeepActive and containing an embedded
SignalsDescriptor."

Case 2.  A replacement signals descriptor is processed. (See Section
7.1.11).  Please note that the phrasing of cases 2b
and 2c, to exclude sequential signal lists, is necessary to reflect the
"except as follows" part of the statement in the spec.

        For each signal:

        Case 2a. The signal is active but not in the replacement descriptor:
                Stop the active signal
                                Quote from spec: "Any signals applied to the
Termination not in the replacement descriptor shall be stopped..."

        Case 2b. The signal is in the replacement descriptor, it is not a
sequential signal list,
                  and its KeepActive flag is false
                Stop the signal, if active, and start the replacement signal
                                Quote from spec: "... and new signals are
applied, except as follows"

        Case 2c. The signal is in the replacement descriptor, it is not a
sequential signal list,
                  and its KeepActive flag is true:
                Ignore the signal in the replacement descriptor (don't stop
an active signal,
                don't start the replacement signal)
                                Quote from spec: "Signals present in the
replacement descriptor and containing the KeepActive flag shall be continued
if they are currently playing and have not already completed.  If a
replacement signal descriptor contains a signal that is not currently
playing and contains the KeepActive flag, that signal SHALL be ignored."

        Case 2d. The signal is in the replacement descriptor, it is a
sequential signal list,
                  and a sequential signal list with the same id is active
                Ignore the replacement signal (don't stop the active
sequential signal list,
                don't start the replacement)
                                Quote from spec: "If the replacement
descriptor contains a sequential signal list with the same identifier as the
existing descriptor, then
*       the signal type and sequence of signals in the sequential signal
list in the replacement descriptor shall be ignored, and
*       the playing of the signals in the sequential signal list in the
existing descriptor shall not be interrupted."

        Case 2e. The signal is in the replacement descriptor, it is a
sequential signal list,
                  but no sequential signal list with the same id is active
                Start the replacement signal
                                Quote from spec: "...new signals are
applied..."

Nancy Griffeth

---

From: Tom-PT Taylor <[email-masked]>
Date: Thu, 18 Jan 2001 18:22:38 -0500

Resend

-----Original Message-----
From: Taylor, Tom-PT [NORSE:B901:EXCH]
Sent: Tuesday, January 16, 2001 4:09 PM

Your summary of behaviour is correct.  The answers to your specific concerns
are:

 (a) There is no KeepActive flag associated with sequential signal lists.
Their behaviour upon replacement of the SignalsDescriptor is specified by
other means as you have cited.  The common theme of the paragraph is what
happens on replacement of the active SignalsDescriptor.

 (b) Indeed, once the new SignalsDescriptor has taken effect, the values of
the KeepActive flags it contains are "forgotten" (i.e.) of no further
relevance.

> -----Original Message-----
> From: Griffeth, Nancy D (Nancy) [mailto:[email-masked]]
> Sent: Tuesday, January 02, 2001 9:16 PM
> To: [email-masked]
> Subject: [MEGACO] KeepActive processing
>
>
> Hi, all,
>