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

Christer Holmberg <christer.holmberg@ericsson.com> Fri, 03 February 2017 10:42 UTC

Return-Path: <christer.holmberg@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 10431127078; Fri, 3 Feb 2017 02:42:42 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.22
X-Spam-Level:
X-Spam-Status: No, score=-4.22 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, URIBL_BLOCKED=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 isngXanBEGuT; Fri, 3 Feb 2017 02:42:39 -0800 (PST)
Received: from sessmg23.ericsson.net (sessmg23.ericsson.net [193.180.251.45]) (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 89556129BDA; Fri, 3 Feb 2017 02:42:38 -0800 (PST)
X-AuditID: c1b4fb2d-e76b398000007e3d-82-58945e9cd894
Received: from ESESSHC015.ericsson.se (Unknown_Domain [153.88.183.63]) by (Symantec Mail Security) with SMTP id E1.14.32317.C9E54985; Fri, 3 Feb 2017 11:42:36 +0100 (CET)
Received: from ESESSMB209.ericsson.se ([169.254.9.76]) by ESESSHC015.ericsson.se ([153.88.183.63]) with mapi id 14.03.0319.002; Fri, 3 Feb 2017 11:42:30 +0100
From: Christer Holmberg <christer.holmberg@ericsson.com>
To: "Cullen Jennings (fluffy)" <fluffy@cisco.com>, Magnus Westerlund <magnus.westerlund@ericsson.com>
Thread-Topic: [rtcweb] [MMUSIC] Text proposal for Bundle regarding Associating RTP/RTCP With Correct SDP Media Description
Thread-Index: AQHSfaJ5jrr91gBvrE2+PKFOpdD0GaFXKnMA
Date: Fri, 03 Feb 2017 10:42:30 +0000
Message-ID: <D4BA2B3D.1756C%christer.holmberg@ericsson.com>
References: <1f020dc6-1ac8-b71b-aee4-a711d15f1588@ericsson.com> <2e0ea537-d03e-f263-ad64-cdd65ecd3fb5@ericsson.com> <D701B5B7-C221-4D0E-B10A-D01D3FE5E4AD@cisco.com>
In-Reply-To: <D701B5B7-C221-4D0E-B10A-D01D3FE5E4AD@cisco.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/14.7.1.161129
x-originating-ip: [153.88.183.17]
Content-Type: text/plain; charset="iso-8859-1"
Content-ID: <986C7FAA008B9D46BA9ED85C3F95178E@ericsson.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrCIsWRmVeSWpSXmKPExsUyM2K7ve6cuCkRBn+n6FhMn/WOzWJ+xzo2 i47JbBZTlz9msVj7r53dgdVjyu+NrB5Llvxk8vhy+TNbAHMUl01Kak5mWWqRvl0CV8af7neM Baf7GCuWHZvA3sA4N7uLkZNDQsBEonndFbYuRi4OIYF1jBKXmy5DOYsYJWa+7mDqYuTgYBOw kOj+pw3SICKQLtH+4BEziM0s0MEkcWmFAogtLFAtcWDWXkaImhqJNauvsELYRhJXe46C2SwC KhJ3p61lA7F5BawlNuz9ywKxawWjxM9N05lAEpwCthIfpr4HG8QoICbx/dQaJohl4hK3nsxn grhaQGLJnvPMELaoxMvH/8AWiAroSSx/voYZ5GYJAUWJ5f1yEK16EjemTmGDsK0ler+/hLpf W2LZwtfMEPcISpyc+YRlAqP4LCTbZiFpn4WkfRaS9llI2hcwsq5iFC1OLS7OTTcy1kstykwu Ls7P08tLLdnECIzLg1t+6+5gXP3a8RCjAAejEg/vhsbJEUKsiWXFlbmHGCU4mJVEeAX9pkQI 8aYkVlalFuXHF5XmpBYfYpTmYFES5zVbeT9cSCA9sSQ1OzW1ILUIJsvEwSnVwJi+nI/398Fa mfsJSjkcaWZcG6z6Pm28OO3nkaex15bVLmYNyZxgl+opfS4nap2M647oUyHRey5ESSZ8aRT5 NrPfJnlvDwv/O63nExSW6mrI7v+78ggP/9FOIfnPC4Pkq59rGlg8czomvtsnQlph7fzf95cL SHzZ2WW88d6mV4bsizmv57A/eKbEUpyRaKjFXFScCAAhOCAjxwIAAA==
Archived-At: <https://mailarchive.ietf.org/arch/msg/mmusic/1YD5uKaEYvG9xEvTsFmYKuhxiHU>
Cc: "draft-ietf-rtcweb-jsep@tools.ietf.org" <draft-ietf-rtcweb-jsep@tools.ietf.org>, RTCWeb IETF <rtcweb@ietf.org>, "mmusic (E-mail)" <mmusic@ietf.org>, "draft-ietf-mmusic-sdp-bundle-negotiation@ietf.org" <draft-ietf-mmusic-sdp-bundle-negotiation@ietf.org>
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: Fri, 03 Feb 2017 10:42:42 -0000

Hi,

>2) both the proposed and current text seem lacking in dealing with
>multiple bundle groups

No matter what text we move forward with, I think it shall be explicitly
said that the procedures are per IP address:port. So, if you have multiple
bundle groups, you will apply the procedures to each group, independent of
each other.

Regards,

Christer

>
>> On Jan 30, 2017, at 6:18 AM, Magnus Westerlund
>><magnus.westerlund@ericsson.com> wrote:
>> 
>> 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
>> ----------------------------------------------------------------------
>> 
>> _______________________________________________
>> rtcweb mailing list
>> rtcweb@ietf.org
>> https://www.ietf.org/mailman/listinfo/rtcweb
>