Re: [MMUSIC] [rtcweb] Text proposal for Bundle regarding Associating RTP/RTCP With Correct SDP Media Description

Magnus Westerlund <magnus.westerlund@ericsson.com> Tue, 31 January 2017 08:29 UTC

Return-Path: <magnus.westerlund@ericsson.com>
X-Original-To: mmusic@ietfa.amsl.com
Delivered-To: mmusic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A954C129444; Tue, 31 Jan 2017 00:29:51 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.221
X-Spam-Level:
X-Spam-Status: No, score=-4.221 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6lK1BrJj936R; Tue, 31 Jan 2017 00:29:49 -0800 (PST)
Received: from sessmg22.ericsson.net (sessmg22.ericsson.net [193.180.251.58]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 4800C129430; Tue, 31 Jan 2017 00:29:48 -0800 (PST)
X-AuditID: c1b4fb3a-d4bff70000004068-39-58904af91fa5
Received: from ESESSHC020.ericsson.se (Unknown_Domain [153.88.183.78]) by (Symantec Mail Security) with SMTP id F8.D6.16488.9FA40985; Tue, 31 Jan 2017 09:29:46 +0100 (CET)
Received: from [127.0.0.1] (153.88.183.153) by smtp.internal.ericsson.com (153.88.183.80) with Microsoft SMTP Server id 14.3.319.2; Tue, 31 Jan 2017 09:29:35 +0100
To: "mmusic (E-mail)" <mmusic@ietf.org>, "rtcweb@ietf.org" <rtcweb@ietf.org>, "draft-ietf-mmusic-sdp-bundle-negotiation@ietf.org" <draft-ietf-mmusic-sdp-bundle-negotiation@ietf.org>, draft-ietf-rtcweb-jsep@tools.ietf.org
References: <1f020dc6-1ac8-b71b-aee4-a711d15f1588@ericsson.com> <2e0ea537-d03e-f263-ad64-cdd65ecd3fb5@ericsson.com>
From: Magnus Westerlund <magnus.westerlund@ericsson.com>
Message-ID: <40af9040-0cd9-0c0c-b10d-ea3256491117@ericsson.com>
Date: Tue, 31 Jan 2017 09:29:35 +0100
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0
MIME-Version: 1.0
In-Reply-To: <2e0ea537-d03e-f263-ad64-cdd65ecd3fb5@ericsson.com>
Content-Type: text/plain; charset="windows-1252"; format="flowed"
Content-Transfer-Encoding: 8bit
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrMLMWRmVeSWpSXmKPExsUyM2K7n+4vrwkRBk0HlCymz3rHZjG/Yx2b xdTlj1ks1v5rZ3dg8Viy5CeTx5fLn9kCmKK4bFJSczLLUov07RK4Mu78vs5WML2TseLWgols DYx7U7oYOTkkBEwkFq++wdTFyMUhJLCOUeLa8gZmCGc5o8Tj3W9YQaqEBaolNsz+CVYlIvCE UaJ/wWMWkISQQKnE+4lXwWw2AQuJmz8a2UBsXgF7iSULfjGD2CwCqhI7Hl1iB7FFBWIk3q5f zg5RIyhxcuYTsF5OAQeJh50LgZZxcDAD9T7YWgYSZhaQl2jeOpsZYpW2RENTB+sERv5ZSLpn IXTMQtKxgJF5FaNocWpxcW66kZFealFmcnFxfp5eXmrJJkZgUB7c8ttqB+PB546HGAU4GJV4 eA16+yOEWBPLiitzDzFKcDArifCqO0+IEOJNSaysSi3Kjy8qzUktPsQozcGiJM5rtvJ+uJBA emJJanZqakFqEUyWiYNTqoGRd/nVr7+83yelb8s82xS2nC/mn0uj4SSpEwl638PZG9wmad5a VG3uWCPg5qDzMjFA+Oe57u2p36JOzUvdv2Ra7bN5jieXnnCMVNnSfHmFXt6HPd+N1Lc5aLeG a0yN/id969Htr3K3Ys6KMLkskbsjzvR61fPqaSqza68dC65dEOvU1Gv8fHeZEktxRqKhFnNR cSIAdk9LjEYCAAA=
Archived-At: <https://mailarchive.ietf.org/arch/msg/mmusic/AxpL3rNIwg7k7cMg1HlRaA2k9tA>
Subject: Re: [MMUSIC] [rtcweb] Text proposal for Bundle regarding Associating RTP/RTCP With Correct SDP Media Description
X-BeenThere: mmusic@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Multiparty Multimedia Session Control Working Group <mmusic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/mmusic>, <mailto:mmusic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/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: Tue, 31 Jan 2017 08:29:52 -0000

Hi,

There was a request for a readable diff on github, so I have produced 
one: http://www.denstore.se/IETF/Diff-jsep-18-part.html

However, I will note that it is likely only relevant to see the changes 
up until the received RTP packet routing steps. Then the changes are so 
massive due to restructuring that the diff is not particularly useful.

I will also note that the text on github has been improved with some 
language corrections proposed by Bernard Aboba.

Cheers

Magnus

Den 2017-01-30 kl. 14:18, skrev Magnus Westerlund:
> Hi,
>
> I have now generated a pull request for this text, with some very minor
> changes.
>
> https://github.com/rtcweb-wg/jsep/pull/538
>
> Cheers
>
> Magnus
>
> Den 2017-01-27 kl. 17:43, skrev Magnus Westerlund:
>> MMUSIC and RTCWEB,
>>
>> Here is now a more complete text proposal that also considers the RTCP.
>> It also goes further than what Appendix B defines in one aspect, namely
>> explicitly considering third party RTCP reporting and what to do with it.
>>
>> Feedback is much appreciated. I plan to put this into a PR towards JSEP
>> APPENDIX B on monday. If only to get the JSEP authors attention ;-).
>> However, the text is really intended for the next version of BUNDLE.
>>
>>
>> X.  Associating RTP/RTCP With Correct SDP Media Description
>>
>>    As described in [RFC3550], RTP packets are associated with RTP
>>    streams [RFC7656].  Each RTP stream is identified by an SSRC value,
>>    and each RTP packet carries an SSRC value that is used to associate
>>    the packet with the correct RTP stream.  RTCP packets also uses SSRCs
>>    to identify on which RTP streams any report or feedback relate to.
>>    Thus, an RTCP packet will commonly carry multiple SSRC values, and
>>    might therefore be providing feedback or report on multiple RTP
>>    streams.
>>
>>    In order to be able to process received RTP/RTCP packets correctly it
>>    must be possible to associate an RTP stream with the correct "m="
>>    line, as the "m=" line and SDP attributes associated with the "m="
>>    line contain information needed to process the packets.
>>
>>    As all RTP streams associated with a BUNDLE group are part of the
>>    same RTP session and using the same address:port combination for
>>    sending and receiving RTP/RTCP packets, the local address:port
>>    combination cannot be used to associate an RTP stream with the
>>    correct "m=" line.  In addition, multiple RTP streams might be
>>    associated with the same "m=" line.
>>
>>    Also, as described in Section 10.1.1, the same payload type value
>>    might be used by multiple RTP streams, in which case the payload type
>>    value cannot be used to associate an RTP stream with the correct "m="
>>    line.  However, there are cases where each "m=" line has unique
>>    payload type values, and then the payload type could serve as
>>    indicator to the relevant "m=" line the RTP stream is associated
>>    with.
>>
>>    An offerer and answerer can inform each other which SSRC values they
>>    will use for an RTP stream by using the SDP 'ssrc' attribute
>>    [RFC5576].  However, an offerer will not know which SSRC values the
>>    answerer will use until the offerer has received the answer providing
>>
>>
>>
>> Name                      Expires July 31, 2017                 [Page 2]
>> 
>> Internet-Draft              Abbreviated-Title               January 2017
>>
>>
>>    that information.  Due to this, before the offerer has received the
>>    answer, the offerer will not be able to associate an RTP stream with
>>    the correct "m=" line using the SSRC value associated with the RTP
>>    stream.  In addition, the offerer and answerer may start using new
>>    SSRC values mid-session, without informing each other using the SDP
>>    'ssrc' attribute.
>>
>>    In order for an offerer and answerer to always be able to associate
>>    an RTP stream with the correct "m=" line, the offerer and answerer
>>    using the BUNDLE extension MUST support the mechanism defined in
>>    Section 14, where the offerer and answerer includes the
>>    identification-tag (provided by the remote peer) associated with an
>>    "m=" line in the RTP Streams and in RTCP SDES packets part of a
>>    BUNDLE group.
>>
>>    The mapping from an SSRC to an identification-tag is carried in RTCP
>>    SDES packets or in RTP header extensions (Section 14).  Since a
>>    compound RTCP packet can contain multiple RTCP SDES packets, and each
>>    RTCP SDES packet can contain multiple chunks, an RTCP packet can
>>    contain several SSRC to identification-tag mappings.  The offerer and
>>    answerer maintain tables mapping RTP streams identified by SSRC to
>>    "m=" lines identified by the identification-tag.  These tables are
>>    updated each time new information that affects how packets should be
>>    processed and routed are received.
>>
>>    To prepare for demultiplexing RTP streams to the correct "m=" line,
>>    the following steps MUST be followed for each BUNDLE group based on
>>    the SDP signalling information.
>>
>>       Construct a table mapping MID to "m=" line for each "m=" line in
>>       this BUNDLE group.  Note that an "m=" line may only have one MID.
>>
>>       Construct a table mapping incoming RTP streams (SSRCs) to their
>>       "m=" line for each "m=" line in this BUNDLE group and for each RTP
>>       stream explicitly signalled for receiving in that "m=" line.
>>
>>       Construct a table mapping payload types to "m=" line for each "m="
>>       line in the BUNDLE group and for each payload type configured for
>>       receiving in that "m=" line.  If any payload type is configured
>>       for receiving in more than one "m=" line in the BUNDLE group, do
>>       not it include it in the table.
>>
>>    Note that for each of these tables, there can only be one mapping for
>>    any given key (MID, SSRC, or PT).  In other words, the tables are not
>>    multimaps.
>>
>>    As "m=" lines are added or removed from the BUNDLE groups, or their
>>    configurations are changed, the tables above MUST also be updated.
>>
>>
>>
>> Name                      Expires July 31, 2017                 [Page 3]
>> 
>> Internet-Draft              Abbreviated-Title               January 2017
>>
>>
>>    Received RTP packets that are syntactically correct are processed by
>>    the RTP/RTCP protocol implementation for statistics etc.  After this
>>    processing they need to be routed to the higher layer context
>>    associated with the "m=" line within the BUNDLE group.  Somewhere in
>>    the process where an received RTP packet is processed to be delivered
>>    to the higher layer by RTP the matching step below MUST be performed:
>>
>>    1.  Reception of an RTP packet for an RTP stream that has an existing
>>        mapping in the RTP stream to m= line table.  Before proceeding in
>>        delivering the packet to the higher layer context according to
>>        the RTP stream to "m=" line mapping table the following checks
>>        MUST be performed:
>>
>>        A.  If the packet carries an RTP header extension with a SDES MID
>>            value that is not in the table mapping MID to "m=" line, then
>>            do not deliver the RTP packet to higher layers.
>>
>>        B.  If the packet carries an RTP header extension with a SDES MID
>>            value that is in the table mapping MID to "m=" line, and the
>>            value indicates a different "m=" line than the current RTP
>>            stream to "m=" line mapping table, then update the RTP stream
>>            to "m=" line mapping.
>>
>>    2.  Reception of an RTP packet for an RTP stream that has no existing
>>        mapping to an m= line.  In this case the following actions MUST
>>        be performed:
>>
>>        A.  If the packet carries an RTP header extension with a SDES MID
>>            value that is in the table mapping MID to "m=" line, then
>>            create an entry in the RTP stream to "m=" line mapping table
>>            for this RTP stream (SSRC).  Then deliver the RTP packet to
>>            the "m=" line context of the created mapping and stop.
>>
>>        B.  If the packet carries a Payload Type that is in the payload
>>            type table, then create an entry in the RTP stream to "m="
>>            line mapping table for this RTP stream (SSRC).  Then deliver
>>            the RTP packet to the "m=" line context of the created
>>            mapping and stop.
>>
>>        C.  Otherwise do not deliver the RTP packet to higher layers.
>>            Note, this includes unknown MID values.
>>
>>    For each RTCP packet received (including each RTCP packet that is
>>    part of a compound RTCP packet), the RTCP packet needs to be
>>    processed by the RTP/RTCP implementation and relevant information and
>>    data from the RTCP packets needs to be routed to the appropriate
>>    handler for the related RTP streams.  The appropriate handler is
>>    determined by using the RTP stream to "m=" line mapping table.
>>
>>
>>
>> Name                      Expires July 31, 2017                 [Page 4]
>> 
>> Internet-Draft              Abbreviated-Title               January 2017
>>
>>
>>    On reception of any compound RTCP packet prior to dispatching the
>>    received information and data, if there is an RTCP SDES packet
>>    included that SHOULD be processed first.  If that SDES packet
>>    contains SDES MID entries, this can results in updates and additions
>>    to the RTP stream to "m=" line mapping table.  Thus each of the SDES
>>    MID items are processed and the current table entries are checked if
>>    the corresponding MID value matches the current RTP stream to "m="
>>    line mapping, else the entry is updated.  If there is no RTP stream
>>    to "m=" line table mapping entry for the received SDES item's SSRC,
>>    such an entry is created.  Note, that in the process of updating the
>>    table entries, update flap suppression as discussed in Section 4.2.6
>>    of [RFC7941] should be considered.
>>
>>    The various different RTCP packets as well as their various sub
>>    parts, such as the various RTCP Feedback message types, relates to
>>    the RTP streams in a couple of different ways.  The currently known
>>    patterns are the following:
>>
>>    Reports on outgoing RTP streams:  For all RTP streams that this
>>       endpoint is the source of, it can expect to receive report blocks
>>       of several types identified as relating to an outgoing stream.
>>       The basic pattern for these blocks are that the RTCP packet header
>>       identifies the source of the reports, as identified by an SSRC,
>>       and containing one or more report blocks, where each report block
>>       identifies the RTP stream, using the SSRC, the report relates to.
>>       For this pattern the relevant report information is provided to
>>       the higher layer associated with the "m=" line the RTP Stream to
>>       "m=" line table identifies.  The source SSRC as identifier of the
>>       endpoint that the report originates are relevant for interpreting
>>       the information, but not necessarily for routing.  Example of this
>>       is pattern are:
>>
>>       Sender Report (SR) and Receiver Report (RR)  The basic receiver
>>          report blocks from RFC3550 start with the SSRC of the RTP
>>          stream they report on.
>>
>>       Extended Reports (XR):  RFC3611 is a framework that enables a
>>          large number of different reports.  However, a large number of
>>          these report formats are reporting on specific RTP streams and
>>          thus each individual report of these types contains a SSRC
>>          field to identify the RTP stream.
>>
>>    RTCP Feedback Messages for outgoing RTP streams:  The RFC 4585 RTCP
>>       feedback messages allow for a number of different type of feedback
>>       messages.  However, the RTCP feedback message header contains the
>>       SSRC identifying the source of the feedback messages as well as
>>       the actual type of the feedback.  Some of the feedback messages
>>       also uses the target SSRC field in the header to identify which
>>
>>
>>
>> Name                      Expires July 31, 2017                 [Page 5]
>> 
>> Internet-Draft              Abbreviated-Title               January 2017
>>
>>
>>       RTP stream the feedback is related to.  For these types all the
>>       FCI entries, if multiple ones are forwarded to the identified
>>       handler.  Examples of this pattern are:
>>
>>       Picture Loss Indication (PLI):  RFC 4585 (PT=PSFB, FMT=1).
>>
>>       Slice Loss Indication (SLI):  RFC 4585 (PT=PSFB, FMT=2).
>>
>>       Reference Picture Selection Indication (RPSI):  RFC 4585 (PT=PSFB,
>>          FMT=3).
>>
>>       Generic NACK:  [RFC4585] (PT=RTPFB and FMT=1).
>>
>>       Other feedback messages includes the target SSRC in the Feedback
>>       Control Information (FCI).  Here each FCI needs to be processed
>>       and the SSRC field identified.  And the individual FCI combined
>>       with the RTCP packet header context needs to be forwarded to the
>>       identified handler.  Example of this pattern are:
>>
>>       Full Intra Request (FIR):  [RFC5104] (PT=PSFB, FMT=4).
>>
>>       Temporal-Spatial Trade-off Request (TSTR):  [RFC5104] (PT=PSFB,
>>          FMT=5).
>>
>>       Temporal-Spatial Trade-off Notification (TSTN):  This [RFC5104]
>>          defined message (PT=PSFB, FMT=5) is actually a notifciation in
>>          response to a TSTR this endpoint sent using the SSRC the FCI
>>          identifies as source.
>>
>>       H.271 Video Back Channel Message (VBCM):  [RFC5104] (PT=PSFB,
>>          FMT=7).
>>
>>       Layer Refresh Request (LRR):  [I-D.ietf-avtext-lrr] (PT=PSFB,
>>          FMT=TBD).
>>
>>    Descriptive or Notifications for an incoming RTP stream:  There exist
>>       some RTCP packet types that provides additional information or
>>       notifies about events related to the RTP stream identified.  In
>>       these cases the RTP stream is identified using the SSRC field
>>       value, and the information is provided to the higher layer
>>       associated with the "m=" line for the incoming RTP stream as
>>       identified by the current RTP stream to "m=" line table.  For this
>>       type of pattern it is common that the RTCP packets and information
>>       is repeated, either periodically (e.g.  SDES items), or for a
>>       duration (e.g.  BYE), thus suppression of repetitions can be
>>       considered.  Examples of these are:
>>
>>
>>
>>
>>
>> Name                      Expires July 31, 2017                 [Page 6]
>> 
>> Internet-Draft              Abbreviated-Title               January 2017
>>
>>
>>       Source Description (SDES) RTCP Packet:  The base RTP/RTCP protocol
>>          [RFC3550] defines SDES RTCP packets as a way of providing per
>>          source (SSRC) specific information about the source.  An SDES
>>          packet contains zero or more chunks, where a chunk contains the
>>          SSRC for the source being described by the one or more items
>>          included in the chunk.  Forward the SDES items in each chunk to
>>          the RTP stream's handler.
>>
>>       Goodbye (BYE) RTCP Packet:  This RTP/RTCP protocol [RFC3550]
>>          mechanism indicates that a particular RTP stream is leaving the
>>          RTP session.  Thus, a most relevant event to inform the handler
>>          for this RTP steam of.
>>
>>    Third Party Targeted Reports or Feedback:  There exist some
>>       multiparty RTP Topologies that results in that an endpoint
>>       receives third party reports (SR [RFC3550], RR [RFC3550] or XR
>>       [RFC3611]) as well as Feedback Messages [RFC4585] that relates to
>>       or targets an SSRC that originates from another endpoint, and
>>       where the source of the RTCP packet is also another endpoint.
>>       This type of packets should be forwarded to the higher layer
>>       function dealing with the third party reporting.  And if none
>>       exist then they can be suppressed.  As the third party handler can
>>       be focused on determining the conditions for the source of the
>>       reports and feedback, or focused on how the RTP stream source
>>       progresses, or both recommendations can't be made.
>>
>>    APP Packets:  The RTCP APP Packets [RFC3550] are a mechanism that
>>       enables experimentation.  The APP packet only specifies the source
>>       of the packet.  Thus this information can be related to any of the
>>       "m=" lines, thus deliver a copy of the packet to each "m=" line or
>>       an APP specific handler.
>>
>
>


-- 

Magnus Westerlund

----------------------------------------------------------------------
Services, Media and Network features, Ericsson Research EAB/TXM
----------------------------------------------------------------------
Ericsson AB                 | Phone  +46 10 7148287
Färögatan 6                 | Mobile +46 73 0949079
SE-164 80 Stockholm, Sweden | mailto: magnus.westerlund@ericsson.com
----------------------------------------------------------------------