Re: [MMUSIC] draft-ietf-mmusic-media-loopback-13 questions

Paul Kyzivat <pkyzivat@cisco.com> Mon, 03 May 2010 15:55 UTC

Return-Path: <pkyzivat@cisco.com>
X-Original-To: mmusic@core3.amsl.com
Delivered-To: mmusic@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id DC0A63A69FA for <mmusic@core3.amsl.com>; Mon, 3 May 2010 08:55:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.41
X-Spam-Level:
X-Spam-Status: No, score=-9.41 tagged_above=-999 required=5 tests=[AWL=-0.611, BAYES_00=-2.599, J_CHICKENPOX_12=0.6, J_CHICKENPOX_15=0.6, J_CHICKENPOX_18=0.6, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id bgaw+rvTBNe6 for <mmusic@core3.amsl.com>; Mon, 3 May 2010 08:55:48 -0700 (PDT)
Received: from rtp-iport-1.cisco.com (rtp-iport-1.cisco.com [64.102.122.148]) by core3.amsl.com (Postfix) with ESMTP id 4A2C43A68CF for <mmusic@ietf.org>; Mon, 3 May 2010 08:55:48 -0700 (PDT)
Authentication-Results: rtp-iport-1.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-AV: E=Sophos;i="4.52,320,1270425600"; d="scan'208";a="107442756"
Received: from rtp-core-2.cisco.com ([64.102.124.13]) by rtp-iport-1.cisco.com with ESMTP; 03 May 2010 15:55:33 +0000
Received: from [161.44.174.156] (dhcp-161-44-174-156.cisco.com [161.44.174.156]) by rtp-core-2.cisco.com (8.13.8/8.14.3) with ESMTP id o43FtXc7024179; Mon, 3 May 2010 15:55:33 GMT
Message-ID: <4BDEF1F5.6030000@cisco.com>
Date: Mon, 03 May 2010 11:55:33 -0400
From: Paul Kyzivat <pkyzivat@cisco.com>
User-Agent: Thunderbird 2.0.0.24 (Windows/20100228)
MIME-Version: 1.0
To: "Muthu ArulMozhi Perumal (mperumal)" <mperumal@cisco.com>
References: <9863FC115479184193CC60C8C2F26B1013207F6C79@dlee04.ent.ti.com> <01a201cae7b4$010d2a50$03277ef0$@com> <9863FC115479184193CC60C8C2F26B10132086C45D@dlee04.ent.ti.com><020501cae7f4$e5ef1d50$b1cd57f0$@com> <4BDA219B.6020706@cisco.com> <1D062974A4845E4D8A343C6538049202029C6FE8@XMB-BGL-414.cisco.com> <4BDAE8C3.3030000@cisco.com> <1D062974A4845E4D8A343C6538049202029C739A@XMB-BGL-414.cisco.com>
In-Reply-To: <1D062974A4845E4D8A343C6538049202029C739A@XMB-BGL-414.cisco.com>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
Cc: kaynam.hedayat@exfo.com, mmusic@ietf.org
Subject: Re: [MMUSIC] draft-ietf-mmusic-media-loopback-13 questions
X-BeenThere: mmusic@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Multiparty Multimedia Session Control Working Group <mmusic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/mmusic>, <mailto:mmusic-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/mmusic>
List-Post: <mailto:mmusic@ietf.org>
List-Help: <mailto:mmusic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/mmusic>, <mailto:mmusic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 03 May 2010 15:55:50 -0000

Muthu ArulMozhi Perumal (mperumal) wrote:
> These look good to me and flexible enough to also request a transcoder
> to loopback a media stream. 
> 
> However, the RTP port numbers advertised by the source/mirror for the
> in/out and from/to media stream pairs would typically be the same. Is it
> legal/safe to pair m-lines that use the same IP address and port?

That's a mistake in my examples. It should be as follows:

If the same format is used for the source and the mirror, then there 
will be only one m-line used bidirectionally. In case where different 
formats are used in the two directions, then different ports should be used.

> RFC3388 (section 7.5.3) forbids such an usage for the Flow
> Identification (FID) group:
> 
> <snip>
>    FID MUST NOT be used to group "m" lines with the same 
>    IP address/port. Therefore, an SDP like the one below MUST NOT
>    be generated.
> 
>        v=0
>        o=Laura 289083124 289083124 IN IP4 six.example.com
>        t=0 0
>        c=IN IP4 131.160.1.112
>        a=group:FID 1 2
>        m=audio 30000 RTP/AVP 0
>        a=mid:1
>        m=audio 30000 RTP/AVP 8
>        a=mid:2
> 
>    The correct SDP for the session above would be the following one:
> 
>        v=0
>        o=Laura 289083124 289083124 IN IP4 six.example.com
>        t=0 0
>        c=IN IP4 131.160.1.112
>        m=audio 30000 RTP/AVP 0 8
> 
>    If two "m" lines are grouped using FID they MUST differ in their
>    transport addresses (i.e., IP address plus port).
> </snip>
> 
> Not sure, if this is applicable only to FID or there are generic SDP
> grouping/paring issue.
> 
> If this is legal, can't the directionality be derived based on
> sendonly/recvonly, instead of having to explicitly specify in/out or
> from/out?

I thought about that. It *can* be derived that way in some cases. Cases 
where it cannot are when the offerer is willing to be either the source 
or the mirror. In that case it must make both streams sendrecv.

	Thanks,
	Paul

> Offer:
>    m=audio 41352 RTP/AVP 0 8
>    a=loopback:source x
>    a=sendonly
>    m=audio 41352 RTP/AVP 112
>    a=loopback:source x
>    a=rtpmap:112 encaprtp/8000
>    a=recvonly
>    m=video 41362 RTP/AVP 116
>    a=loopback:source y
>    a=rtpmap:116 videostuff...
>    a=sendonly
>    m=video 41362 RTP/AVP 118
>    a=loopback:source y
>    a=rtpmap:118 encaprtp/8000
>    a=recvonly
> 
> Answer:
>    m=audio 54312 RTP/AVP 0
>    a=loopback:mirror x
>    a=recvonly
>    m=audio 54312 RTP/AVP 112
>    a=loopback:mirror x
>    a=rtpmap:112 encaprtp/8000
>    a=sendonly
>    m=video 51362 RTP/AVP 116
>    a=loopback:mirror y
>    a=rtpmap:116 videostuff...
>    a=recvonly
>    m=video 51362 RTP/AVP 118
>    a=loopback:mirror y
>    a=rtpmap:118 encaprtp/8000
>    a=sendonly
> 
> thanks,
> Muthu
> 
> |-----Original Message-----
> |From: Paul Kyzivat (pkyzivat)
> |Sent: Friday, April 30, 2010 7:57 PM
> |To: Muthu ArulMozhi Perumal (mperumal)
> |Cc: Paul E. Jones; kaynam.hedayat@exfo.com; mmusic@ietf.org
> |Subject: Re: [MMUSIC] draft-ietf-mmusic-media-loopback-13 questions
> |
> |
> |Muthu ArulMozhi Perumal (mperumal) wrote:
> |> Paul,
> |>
> |> |So maybe the answer here is to always include both the "real"
> formats
> |> |*and* the encapulated formats in both the offer and the answer,
> while
> |> |using the loopback-source and loopback-mirror to determine who uses
> |> what.
> |>
> |> Are you proposing something like this?
> |>
> |> Offer:
> |>     m=audio 49170 RTP/AVP 0 112
> |>     a=loopback:rtp-pkt-loopback
> |>     a=loopback-source
> |>     a=rtpmap:0 pcum/8000
> |>     a=rtpmap:112 encaprtp/8000
> |>
> |> Answer:
> |>     m=audio 49170 RTP/AVP 0 112
> |>     a=loopback:rtp-pkt-loopback
> |>     a=loopback-mirror
> |>     a=rtpmap:0 pcum/8000
> |>     a=rtpmap:112 encaprtp/8000
> |>
> |> This looks good, except that I am wondering what will happen if the
> |> answerer doesn't support media loopback and hence doesn't understand
> the
> |> "encaprtp" encoding name. What will be the behavior if such an
> answerer
> |> is:
> |> 1) UA
> |> 2) SBC
> |
> |While putting both in "works" techically, it requires the mirror to lie
> |by claiming it is willing to receive the encapsulated format when it is
> |really only willing to send it.
> |
> |A more o/a friendly way of doing this would be:
> |
> |Offer:
> |   m=audio 41352 RTP/AVP 0 8
> |   a=loopback:source-out x
> |   m=audio 41354 RTP/AVP 112
> |   a=loopback:source-in x
> |   a=rtpmap:112 rtploopback/8000
> |
> |Answer:
> |   m=audio 54312 RTP/AVP 8
> |   a=loopback:mirror-in x
> |   m=audio 54320 RTP/AVP 112
> |   a=loopback:mirror-out x
> |   a=rtpmap:112 rtploopback/8000
> |
> |Above is just a thought off the top of my head, and carefully
> |considered. There are many changes implied in the above compared to the
> |current draft:
> |
> |- a stream to be looped can be represented by two m-lines,
> |   one for the input side and one for the output side.
> |
> |- there is no loopback-source/loopback-mirror
> |
> |- a=loopback indicates:
> |   - the role of the message sender (source or mirror)
> |   - the direction of the stream (in/out)
> |   - an identifier used to pair the two streams
> |
> |- There is no *explicit* distinction between packet and media
> |   loopback. Its implicit in the pairing of two streams and
> |   the formats that they contain. This pairing could also
> |   be used to request transcoding between regular formats.
> |   (Packet loopback can be viewed as just a special kind
> |   of transcoder.)
> |
> |In the case of media loopback without transcoding, you typically won't
> |need two m-lines. So in that case it gets simpler:
> |
> |Offer:
> |   m=audio 41352 RTP/AVP 0 8
> |   a=loopback:source
> |
> |Answer:
> |   m=audio 54312 RTP/AVP 8
> |   a=loopback:mirror
> |
> |In above, lack of in/out means both. And then the identifier to match
> |streams isn't needed.
> |
> |Another variant can handle case where choice of who to mirror is
> negotiated:
> |
> |Offer:
> |   m=audio 41352 RTP/AVP 0 8
> |   a=loopback:source/mirror
> |
> |Answer:
> |   m=audio 54312 RTP/AVP 8
> |   a=loopback:mirror
> |
> |Alternative Answer:
> |   m=audio 54312 RTP/AVP 8
> |   a=loopback:source
> |
> |If two streams are desired but mirroring is to be negotiated, then
> there
> |is need to select what formats are to be transcoded to what:
> |
> |Offer:
> |   m=audio 41352 RTP/AVP 0 8
> |   a=loopback:from x
> |   m=audio 41354 RTP/AVP 112
> |   a=loopback:to x
> |   a=rtpmap:112 rtploopback/8000
> |
> |Answer:
> |   m=audio 54312 RTP/AVP 8
> |   a=loopback:mirror-in x
> |   m=audio 54320 RTP/AVP 112
> |   a=loopback:mirror-out x
> |   a=rtpmap:112 rtploopback/8000
> |
> |Alternate Answer:
> |   m=audio 54312 RTP/AVP 8
> |   a=loopback:source-out x
> |   m=audio 54320 RTP/AVP 112
> |   a=loopback:source-in x
> |   a=rtpmap:112 rtploopback/8000
> |
> |Here is a more comprehensive example:
> |
> |Offer:
> |   m=audio 41352 RTP/AVP 0 8
> |   a=loopback:source-out x
> |   a=sendonly
> |   m=audio 41354 RTP/AVP 112
> |   a=loopback:source-in x
> |   a=rtpmap:112 rtploopback/8000
> |   a=recvonly
> |   m=video 41362 RTP/AVP 116
> |   a=loopback:from y
> |   a=rtpmap:116 videostuff...
> |   a=sendrecv
> |   m=video 41364 RTP/AVP 118
> |   a=loopback:to y
> |   a=rtpmap:112 rtploopback/8000
> |   a=sendrecv
> |
> |Answer:
> |   m=audio 54312 RTP/AVP 8
> |   a=loopback:mirror-in x
> |   a=recvonly
> |   m=audio 54320 RTP/AVP 112
> |   a=loopback:mirror-out x
> |   a=rtpmap:112 rtploopback/8000
> |   a=sendonly
> |   m=video 54382 RTP/AVP 120
> |   a=loopback:mirror-in y
> |   a=rtpmap:120 videostuff...
> |   a=recvonly
> |   m=video 54384 RTP/AVP 118
> |   a=loopback:mirror-out y
> |   a=rtpmap:112 rtploopback/8000
> |   a=sendonly
> 
>