On Aug 24, 2008, at 7:25 AM, Christer Holmberg wrote:

>>
> The "media before answer" (if you refer to SDP answer) can be solve  
> by simply saying that one must send an SDP answer must be sent  
> before media is sent.
>
> The you-must-be-able-to-receive-media-once-you-have-sent-the-INVITE  
> doesn't work, because today media sent before SDP answer will often  
> be discarded anyway.
>

Perhaps not, but it's how ever device and service  I currently have  
works.

Not that they work well, mind you.

>> It also makes ICE and SRTP much easier to deal with. By
>> making the transition to "regular" session a re-invite  the gateway
>> can transition from send-only to send-receive (if needed), the  
>> billing
>> system (if it cares) can start the meter running, etc.
>
> So, just to clarify, you are still talking about a single SIP  
> session, right?

That's one of the two possible approaches, and probably the easiest to  
explain.


> The issue with that solution is of course that a forking proxy, as  
> currently defined, would terminate all other legs once the first 200  
> OK (establishing the early media path of the session) arrives.

One could of course change that behavior and have the forking proxy  
return ALL responses.


>
>
> But, that would minimize multiple early media streams, which again  
> in my opinion shows that the main problem is not offer/answer, but  
> forking :)

The two certainly play poorly with each other.

>
>
>> Plus we can drop all the 100-rel and preconditions cruft out of the
>> state machine completely, making life MUCH better for the coder.
>
> If you separate the offer/answer state machine from the SIP  
> transaction state machine it shouldn't really matter in what SIP  
> messages the offers and answers are carried.

Perhaps true, but the SIP 100-rel state machine is profoundly ugly all  
by itself.

>
>
> And, eventhough we probably would be able to remove SDP from  
> provisional responses, I think provisional responses would still be  
> useful for other things (indicating ringing etc).

Yes, and provisionals also impact the resend timers. We need them. We  
just don't need 100-rel.

>
>
> But, of course we could have instead have used something like UPDATE  
> (or even INFO) to indicate "ringing" etc, instead of provisional  
> responses.
>
>> Think of it this way -- If I'm calling a PSTN gateway, do I really
>> want to wait until the PSTN side connection completes before I do the
>> setup work for SRTP? I think I'd rather get that out of the way  
>> before
>> the called party answers, or before I even see early media coming  
>> back
>> unprotected.
>
> What prevents you from doing the SRTP negotiation using reliable  
> provisional responses, in the same way you are able to perform  
> preconditions before the called party answers?

In my case, mostly the desire to avoid reliable provisional responses.

And when you cross-factor reliable provisional, SRTP, and forking, you  
get a real mess.

>
>
>> Now, lets think about forking. When we fork in a proxy, the UAC can
>> only deal with one "best answer", and early media is anybody's guess
>> as to how it might work or what might happen (it pretty much turns to
>> soup, especially if you get multiple early media channels).
>
> Correct. And, that will be a problem as long as it is possible for  
> the UAC to receive multiple early streams - no matter how they are  
> negotiated.
>
>> Consider instead that a forking node is really a "forking gateway",
>> not a proxy. It takes one call in, establishes a fully-negotiated
>> "early session",  then sends out its multiple INVITES.  As those
>> sessions (which might have early media) connect up, the forking
>> gateway deals with the multiple media streams (by bridging,
>> discarding, whatever).
>
> Doesn't that simply move the how-to-choose-which-early-media-stream- 
> to-listen-to from the UAC to the forking proxy/gateway?

It allows the forking gateway to either mix all the streams into one  
(a boon to the bandwidth-restricted UAC), or more intelligently choose  
which one to relay based on media-analysis. For example, ringing can  
easily be differentiated from speech, so if a forking-b2bua sees four  
legs of ringing and one of speech, it could quite reasonably choose  
the speech channel to send back to the UAC.

>
>
>> When a forked session matures to a "regular session", the forking  
>> gateway can re-invite the UAC to >make that session a "regular  
>> session",
>
> Today it does that again by sending 200 OK.

Right -- assuming you did your media setup in provisional (and keying  
in reliable provisional, which is messy)

> Again, I agree that many things probably could be done in a  
> "cleaner" way, but I think the main problem still exists: if there  
> are multiple early media streams (due to forking proxy or forking  
> gateway), how do I choose which one to play?
>

I'm not aware of a perfect asnwer, but (as above) can say there are  
definitely several "better" answers than what we have now.


>> or can even arrange to drop itself out of the media path if needed.
>
> How would that work? It would be able to change the local contact  
> from itself to the called party, but it would not be able to add the  
> possible Record-Routes between itself and the called user.

Media path, not signaling. Fall back to 3PCC setup techniques on a  
reinvite sequence.

>
> Not being able to modify the signaling path during a session (read:  
> update the Record-Route) is a "bug" in the protocol, I think, but  
> it's a separate issue :)
>

yeah, re-invite should be abele to re-route.


>> If we have to have forking, and we have to have media before  
>> there's a
>> final answer, then I think something like this is needed to make it
>> work.
>
> Again, it could make the signaling flows a little more nicer, and it  
> would move some decissions from the UAC to the forking gateway, but  
> the problem with multiple media streams (no matter whether you call  
> them early or not :) would still exist.

Perhaps. However, one of the more profound problems today (as with  
mobile nets) is limited bandwidth to the UA. Dealing with mixing,  
recoding, and selection-from-alternatives in a "server" is much easier.

>
> In my opinion, the only solution, using what we have today, is to  
> make sure there is only one early media stream sent.

Yep. That's quite true. It's also very difficult, if anything forks.  
Our greatest power is our greatest problem.

--
Dean


_______________________________________________
Sip mailing list  https://www.ietf.org/mailman/listinfo/sip
This list is for NEW development of the core SIP Protocol
Use [EMAIL PROTECTED] for questions on current sip
Use [EMAIL PROTECTED] for new developments on the application of sip

Reply via email to