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

Jonathan Lennox <jonathan@vidyo.com> Tue, 31 January 2017 17:57 UTC

Return-Path: <prvs=82043b512d=jonathan@vidyo.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 E8BD8129524; Tue, 31 Jan 2017 09:57:31 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.998
X-Spam-Level:
X-Spam-Status: No, score=0.998 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_SORBS_WEB=3.599, SPF_PASS=-0.001] autolearn=no 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 1B6mGbD-Qu6B; Tue, 31 Jan 2017 09:57:30 -0800 (PST)
Received: from mx0b-00198e01.pphosted.com (mx0a-00198e01.pphosted.com [67.231.149.202]) (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 491211294A5; Tue, 31 Jan 2017 09:57:30 -0800 (PST)
Received: from pps.filterd (m0073109.ppops.net [127.0.0.1]) by mx0a-00198e01.pphosted.com (8.16.0.20/8.16.0.20) with SMTP id v0VHroDp021261; Tue, 31 Jan 2017 12:57:27 -0500
Received: from mail.vidyo.com ([162.209.16.214]) by mx0a-00198e01.pphosted.com with ESMTP id 288n9q9xad-1 (version=TLSv1 cipher=AES128-SHA bits=128 verify=NOT); Tue, 31 Jan 2017 12:57:27 -0500
Received: from 492132-EXCH1.vidyo.com ([fe80::50:56ff:fe85:4f77]) by 492133-EXCH2.vidyo.com ([fe80::50:56ff:fe85:6b62%13]) with mapi id 14.03.0195.001; Tue, 31 Jan 2017 11:57:25 -0600
From: Jonathan Lennox <jonathan@vidyo.com>
To: Magnus Westerlund <magnus.westerlund@ericsson.com>
Thread-Topic: [MMUSIC] Text proposal for Bundle regarding Associating RTP/RTCP With Correct SDP Media Description
Thread-Index: AQHSe+hqNyVXjtU64EysMGTN3ByD2aFTQ7wA
Date: Tue, 31 Jan 2017 17:57:25 +0000
Message-ID: <B0092C29-4ADB-4F0B-9452-0C67B33862D7@vidyo.com>
References: <1f020dc6-1ac8-b71b-aee4-a711d15f1588@ericsson.com>
In-Reply-To: <1f020dc6-1ac8-b71b-aee4-a711d15f1588@ericsson.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [160.79.219.114]
Content-Type: text/plain; charset="Windows-1252"
Content-ID: <EB35F8A750E19E4DB132292D56D6140A@vidyo.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-01-31_08:, , signatures=0
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1612050000 definitions=main-1701310151
Archived-At: <https://mailarchive.ietf.org/arch/msg/mmusic/rVD49yRazB0iTWj5yO1kQDoaJ4A>
Cc: "draft-ietf-rtcweb-jsep@tools.ietf.org" <draft-ietf-rtcweb-jsep@tools.ietf.org>, "rtcweb@ietf.org" <rtcweb@ietf.org>, mmusic <mmusic@ietf.org>, "draft-ietf-mmusic-sdp-bundle-negotiation@ietf.org" <draft-ietf-mmusic-sdp-bundle-negotiation@ietf.org>
Subject: Re: [MMUSIC] 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 17:57:32 -0000

And one more question.  This one has significant interop issues, I think.

Should decoding contexts be assumed to be associated with streams independent of m= lines, or with streams within m= lines?

Specifically, if a sender moves a video stream from one m= line to another (maintaining its PT), must it send a fresh I-frame (keyframe) at the time of the move, or can it continue sending inter frames?

> On Jan 27, 2017, at 11:43 AM, Magnus Westerlund <magnus.westerlund@ericsson.com> wrote:
> 
> 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.
> 
> -- 
> Cheers
> 
> 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
> ----------------------------------------------------------------------
> 
> _______________________________________________
> mmusic mailing list
> mmusic@ietf.org
> https://www.ietf.org/mailman/listinfo/mmusic
>