Hi Dale,
Glad that this draft is getting there.
I have an editorial comment...
I think I'd find it more readable if the information in section 4 was changed a
bit:
Alice supports formats X and Y
Bob supports formats X and Z
Music Source supports formats Y and Z
In this case, the SDP exchanges are:
F1 offers X and Y, F3 answers X
F6/F7 offers X and Y, F8/F10 answers Y
F11 offers X and Z, F12 answers X
In the above, it starts with Alice, Bob and Music but then talks about F1/F3,
etc.
I feel this makes it a bit harder to match Alice, Bob and Music Source with the
messages.
I'd prefer it like this:
Alice supports formats X and Y
Bob supports formats X and Z
Music Source supports formats Y and Z
In this case, the SDP exchanges are:
1. Alice offers X and Y (corresponding message F1),
Bob answers X (F3)
2. Alice (via Bob) offers X and Y (F6/F7),
Music Source (via Bob) answers Y (F8/F10)
3. Bob offers X and Z (F11),
Alice answers X (F12)
I feel this makes it easier to follow.
You could even explain further:
1. Alice calls Bob:
Alice offers X and Y (corresponding message F1),
Bob answers X (F3)
2. Bob puts Alice on hold:
Alice (via Bob) offers X and Y (F6/F7),
Music Source (via Bob) answers Y (F8/F10)
3. Bob takes Alice off hold:
Bob offers X and Z (F11),
Alice answers X (F12)
Regards,
Attila
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Dale Worley
Sent: 06 March 2009 04:14
To: sip-implementors
Subject: Re: [Sip-implementors] draft-worley-service-example-02
I've just submitted draft-worley-service-example-03, "Session Initiation
Protocol Service Example -- Music on Hold". It describes a robust and
reasonably simple way to implement music on hold. At least one major phone
vendor has adopted this technique.
Paul Kyzivat wrote many moons ago:
> One thing I was thinking about here is what happens if common codecs
> don't exist at all parties. I think your proposal can still work in
> that environment, but perhaps its worth discussing.
>
> For example, lets take your case and assume codec support is as follows:
>
> - Alice: X,Y
> - Bob: X,Z
> - Music: Y,Z
Thanks for pointing this out! I've documented this scenario in section
4 of -03, titled "The Importance of Offering All Available Media Formats".
> On another subject - payload type numbers - there is a *potential*
> problem. The music server *can* choose its own payload numbers. This
> is most likely in an offer (which in these flows it never does), but
> also in an answer. It is preferred to use the same payload number in
> answer as offer, but it isn't required. And the answer can also
> include codecs not present in the offer, in which case the music
> server will be choosing for sure.
>
> In these cases, its possible that the payload number chosen by the
> music server will conflict with one used previously by Bob for some
> other codec. For instance, in my example above, the payload number
> chosen by the music server for Y in F8 might turn out to be the same
> as the number used by Bob for X in F3. If this happens, and if the UAs
> *care* about this violation of the specs, then there is little that
> Bob can do about it. IMO that restriction needs to be relaxed a bit.
I thought I had gotten this fixed in -02, but you've shown that I haven't. But
I think that I can get around this problem as long as the MOH server obeys a
SHOULD requirement in section 6.1 of the offer/answer RFC. Quoting from
section 2.7 of -03:
2.7. Payload Type Numbers
In this technique, the MOH source generates an SDP answer that the executing UA
presents to the remote UA as an answer within the original dialog. In basic
functionality, this presents no problem, because [offer‑answer] (section 6.1,
at the very end) specifies that the payload type numbers used in either
direction of RTP are the ones specified in the SDP sent by the recipient of the
RTP.
But strict compliance to [offer‑answer] (section 8.3.2) requires that payload
type numbers used in SDP may only duplicate the payload type numbers used in
any SDP used in the same direction in the dialog if the payload type numbers
represent the same media format (codec) as they did previously. However, the
MOH source has no knowledge of the payload type numbers previously used in the
original dialog, and it may accidentally specify a media format for a
previously used payload type number in its answer (or in a subsequently
generated INVITE or UPDATE). This would cause no problem with media decoding,
as it cannot send any format that was not in the remote UA's offer, but it
would violate [offer‑answer].
Strictly speaking, it is impossible to avoid this problem because the generator
of a first answer in its dialog can choose the payload numbers independently of
the payload numbers in the offer, and the MOH server believes that its answer
is first in the dialog. Thus the only absolute solution is to have the
executing UA rewrite the SDP that passes through it to reassign payload type
numbers, which would also require it to rewrite the payload type numbers in the
RTP packets -- a very undesirable solution. But we can exploit a SHOULD-level
requirement in [offer‑answer] (section 6.1): "In the case of RTP, if a
particular codec was referenced with a specific payload type number in the
offer, that same payload type number SHOULD be used for that codec in the
answer."
If the MOH source obeys this restriction, the executing UA can modify the offer
SDP to "reserve" all payload type numbers that have ever been offered by the
executing UA to prevent the MOH source from using them for different media
formats.
When the executing UA is composing the INVITE to the MOH source, it compiles a
list of all the (dynamically-assigned) payload type numbers which have been
used by it (or by MOH sources on its behalf) in the original dialog but which
are not mapped to a media format in the current offer SDP. (The executing UA
must be maintaining a list of all previously used payload type numbers anyway,
in order to comply with
[offer‑answer].) Then, for each of these payload type numbers, it inserts
session-level or media-level (as appropriate) a=rtpmap lines specifying the
payload type number and the media format that it has been used for. Because of
the reuse rule, the MOH source SHOULD not propose those payload type numbers
for any other media format.
Note that any re-INVITEs from the remote UA that the executing UA passes
through to the MOH server require similar modification, as payload type numbers
that the MOH server receives in past offers are not absolutely reserved against
its use (as they have not been sent in SDP by the MOH
server) nor is there a SHOULD-level proscription against using them in the
current answer (as they do not appear in the current offer).
This should provide an adequate solution to the problems with payload type
numbers, as it will fail only if (1) the remote UA is particular that other UAs
follow the rule about not re-defining payload type numbers, and (2) the MOH
server does not follow the SHOULD-level requirement of [offer‑answer] section
6.1.
Let us show how this process works by modifying the example Section 2.3
(Example Message Flow) with this specific assignment of supported
codecs:
Alice supports formats X and Y
Bob supports formats X and Z
Music Source supports formats Y and Z
In this case, the SDP exchanges are:
F1 offers X and Y, F3 answers X and Z (which cannot be used)
F6 offers X and Y, but F7 offers X, Y, and a place-holder to
block type 92
F8/F10 answers Y
F1 INVITE Alice -> Bob
INVITE sips:[email protected] SIP/2.0
Via: SIP/2.0/TLS atlanta.example.com:5061
;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sips:[email protected]>;tag=1234567
To: Bob <sips:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sips:[email protected];gr>
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
Supported: replaces, gruu
Content-Type: application/sdp
Content-Length: [omitted]
v=0
o=alice 2890844526 2890844526 IN IP4 atlanta.example.com s= c=IN IP4
atlanta.example.com t=0 0 m=audio 49170 RTP/AVP 90 91 a=rtpmap:90 X/8000
a=rtpmap:91 Y/8000
F3 200 OK Bob -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/TLS atlanta.example.com:5061
;branch=z9hG4bK74bf9
;received=192.0.2.103
From: Alice <sips:[email protected]>;tag=1234567
To: Bob <sips:[email protected]>;tag=23431
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sips:[email protected]>
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
Supported: replaces
Content-Type: application/sdp
Content-Length: [omitted]
v=0
o=bob 2890844527 2890844527 IN IP4 biloxi.example.com s= c=IN IP4
biloxi.example.com t=0 0 m=audio 3456 RTP/AVP 90 92 a=rtpmap:90 X/8000
a=rtpmap:92 Z/8000
F6 200 OK Alice -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/TLS biloxi.example.com:5061
;branch=z9hG4bK874bk
;received=192.0.2.105
To: Alice <sips:[email protected]>;tag=1234567
From: Bob <sips:[email protected]>;tag=23431
Call-ID: [email protected]
CSeq: 712 INVITE
Contact: <sips:[email protected];gr>
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
Supported: replaces, gruu
Content-Type: application/sdp
Content-Length: [omitted]
v=0
o=alice 2890844526 2890844526 IN IP4 atlanta.example.com s= c=IN IP4
atlanta.example.com t=0 0 m=audio 49170 RTP/AVP 90 91 a=rtpmap:90 X/8000
a=rtpmap:91 Y/8000
F7 INVITE Bob -> Music Source
INVITE sips:[email protected] SIP/2.0
Via: SIP/2.0/TLS biloxi.example.com:5061
;branch=z9hG4bKnashds9
Max-Forwards: 70
From: Bob <sips:[email protected]>;tag=02134
To: Music Source <sips:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sips:[email protected]>
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
Supported: replaces, gruu
Content-Type: application/sdp
Content-Length: [omitted]
v=0
o=bob 2890844534 2890844534 IN IP4 atlanta.example.com s= c=IN IP4
atlanta.example.com t=0 0 m=audio 49170 RTP/AVP 0 m=audio 49170 RTP/AVP 90
91 92 a=rtpmap:90 X/8000
a=rtpmap:91 Y/8000
a=rtpmap:92 x-reserved/8000
a=recvonly
F8 200 OK Music Source -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/TLS biloxi.example.com:5061
;branch=z9hG4bKnashds9
;received=192.0.2.105
From: Bob <sips:[email protected]>;tag=02134
To: Music Source <sips:[email protected]>;tag=56323
Call-ID: [email protected]
Contact: <sips:[email protected]>
CSeq: 1 INVITE
Content-Length: [omitted]
v=0
o=MusicSource 2890844576 2890844576 IN IP4 source.example.com s= c=IN IP4
source.example.com t=0 0 m=audio 49170 RTP/AVP 91
a=rtpmap:91 Y/8000
a=sendonly
Dale
_______________________________________________
Sip-implementors mailing list
[email protected]
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors
_______________________________________________
Sip-implementors mailing list
[email protected]
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors