Re: [splices] draft-loreto-splices-disaggregated-media-02: competing protocol analysis

"Worley, Dale R (Dale)" <> Tue, 26 July 2011 21:37 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id C9F3311E809B for <>; Tue, 26 Jul 2011 14:37:02 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -103.46
X-Spam-Status: No, score=-103.46 tagged_above=-999 required=5 tests=[AWL=0.139, BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1, USER_IN_WHITELIST=-100]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id Gr8ofypbfmsq for <>; Tue, 26 Jul 2011 14:37:01 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id 26E7D11E8097 for <>; Tue, 26 Jul 2011 14:37:01 -0700 (PDT)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AkMHAL4yL07GmAcF/2dsb2JhbAA1AQEBAQIBFCxKDAIBCQ0FAy0QFCMbEwEBBQsMDBQHpypwB4h8phwCm32FYV8EmBeLVw
X-IronPort-AV: E=Sophos;i="4.67,271,1309752000"; d="scan'208";a="258842606"
Received: from unknown (HELO ([]) by with ESMTP; 26 Jul 2011 17:36:59 -0400
Received: from unknown (HELO ([]) by with ESMTP; 26 Jul 2011 17:34:37 -0400
Received: from ([]) by ([]) with mapi; Tue, 26 Jul 2011 17:36:58 -0400
From: "Worley, Dale R (Dale)" <>
To: "" <>
Date: Tue, 26 Jul 2011 17:36:02 -0400
Thread-Topic: [splices] draft-loreto-splices-disaggregated-media-02: competing protocol analysis
Thread-Index: AcxLwZIl6Rr8MlFjSVud73O038up0QAGnK9X
Message-ID: <>
References: <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
acceptlanguage: en-US
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Subject: Re: [splices] draft-loreto-splices-disaggregated-media-02: competing protocol analysis
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: "Loosely-coupled SIP Devices \(splices\) working group discussion list" <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 26 Jul 2011 21:37:02 -0000

> From: Adam Roach []
> Section 4.1.4 of draft-loreto-splices-disaggregated-media-02 currently
> describes a (rather clever) way to move a SIP session from one client in
> a disaggregated system to another, so as to allow the device that owns
> the SIP association with the far-end to be removed from the call.
> I like it. It actually does a good job of showing that the system in
> question actually isn't an all-entities-are-equal federation of peer
> devices. In fact, it *does* have a critical central controller of sorts,
> and we need to be able to take steps to move that critical central
> controller functionality around. (This is inherent in any system that
> requires no support from the far end, since someone needs to own the SIP
> session).

And the method generalizes:  A new controller can replace an old
controller by sending an INVITE-with-Replaces to both the far end of
the call and to all the UA participants on controller's end of the

As section 4.1.4 notes, this can be done even if the old controller
has died, as long as the new controller has obtained all the dialog
identifiers beforehand.  (Although the dialog event package does not
have any way of indicating "This dialog is to control an additional UA
for dialog XXX." -- We should define appropriate extensions.)

We don't have any mechanism for one controller to tell another
controller to take over the coordination role.  We should define that.

Section 3.1.1 says:

   Central point:  Because the Controller has a complete control over
      the call, it needs to be involved during the whole duration of the
      session.  It cannot leave the session before the whole session
      ends (unless it transfers the controller role to one of the other
      user's devices).
   User experience:  3ppc results in a suboptimal user experience
      because the slave phones are not aware that they are involved in a
      disaggregated media call scenario.  Indeed, the slave phones
      behave as they were just involved in a normal call with the
      Controller.  Moreover the slave phones will be alerted without any
      media having been established yet.
   SDP manipulation:  the Controller cannot "proxy" the SIP messages
      received from one of the parties.  In many cases, it is required
      to modify the SDP exchanged between the participants in order to
      affect the changes.

"Central point" is clear and accurate.

I'm not sure I fully understand "User experience".  The secondary UAs
don't have to be aware that they're part of an aggregation, yes, but
presumably they could be made aware of it if they implemented suitable
extensions to INVITE.  The complaint about being altered is not clear
to me -- of course, to add a UA into a call, it has to be alerted
somehow, or the user has to cause it to initiate a call, or some
remote-control mechanism has to cause it to initiate a call.  This is
unavoidable, but also shared by every other SIP-based mechanism.

In regard to "SDP manipulation", the controller does have to
manipulate SDP.  But in any possible mechanism, some device must take
the descriptions of the media available from the the UAs and combine
them into an understanding of all the available media.  (Even in the
architecture of section 5, where the far-end UA is controlling the
aggregation, the far-end UA must integrate the SDPs provided by the
aggregated UAs in order to determine how to connect the avaialble
media streams to its rendering facilities.)  Once that is done,
expressing that understanding in, e.g., an SDP offer, is not
particularly difficult.

> However, then we get into section 5. I'm not sure what section 5 is
> trying to talk about, since it discusses a model that is not relevant to
> any of the described solutions. Even the INVOKE-based one being proposed
> by this document.

I think the key is "Scenarios not covered by existing mechanisms
include those where none of the nodes can act as a controller because
it does not support the necessary functionality" -- the envisioned
architecture of section 5 puts the work of coordination on the far-end
UA, which is necessary if none of the aggregated UAs is capable of
being a controller.

IMO, section 5 lacks detail on how an additional UA is recruited into
the aggregation; in the other 3 scenarios, the user activates some
special function of the controlling UA.