idnits 2.17.1 draft-ietf-avtcore-multi-party-rtt-mix-02.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The abstract seems to contain references ([RFC4102], [RFC4103]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. == The 'Updates: ' line in the draft header should list only the _numbers_ of the RFCs which will be updated by this document (if approved); it should not include the word 'RFC' in the list. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 659 has weird spacing: '...example from ...' == Line 674 has weird spacing: '...example from ...' == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'SHOULD not' in this paragraph: BEL 0007 Bell Alert in session, provides for alerting during an active session. The display count SHOULD not be altered. == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'SHOULD not' in this paragraph: INT ESC 0061 Interrupt (used to initiate mode negotiation procedure). The display count SHOULD not be altered. == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'SHOULD not' in this paragraph: SGR 009B Ps 006D Select graphic rendition. Ps is rendition parameters specified in ISO 6429. The display count SHOULD not be altered. The SGR code SHOULD be stored for the current source. == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'SHOULD not' in this paragraph: SOS 0098 Start of string, used as a general protocol element introducer, followed by a maximum 256 bytes string and the ST. The display count SHOULD not be altered. == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'SHOULD not' in this paragraph: ST 009C String terminator, end of SOS string. The display count SHOULD not be altered. == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'SHOULD not' in this paragraph: ESC 001B Escape - used in control strings. The display count SHOULD not be altered for the complete escape code. (Using the creation date from RFC4102, updated by this document, for RFC5378 checks: 2003-12-18) (Using the creation date from RFC4103, updated by this document, for RFC5378 checks: 2003-11-21) -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (20 May 2020) is 1430 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'Bob' is mentioned on line 1225, but not defined ** Downref: Normative reference to an Informational RFC: RFC 8643 -- Possible downref: Non-RFC (?) normative reference: ref. 'T140' -- Possible downref: Non-RFC (?) normative reference: ref. 'T140ad1' Summary: 2 errors (**), 0 flaws (~~), 11 warnings (==), 4 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 AVTCore G. Hellstrom 3 Internet-Draft Gunnar Hellstrom Accessible Communication 4 Updates: RFC 4102, RFC 4103 (if approved) 20 May 2020 5 Intended status: Standards Track 6 Expires: 21 November 2020 8 RTP-mixer formatting of multi-party Real-time text 9 draft-ietf-avtcore-multi-party-rtt-mix-02 11 Abstract 13 Real-time text mixers for multi-party sessions need to identify the 14 source of each transmitted group of text so that the text can be 15 presented by endpoints in suitable grouping with other text from the 16 same source. 18 Regional regulatory requirements specify provision of real-time text 19 in multi-party calls. RFC 4103 mixer implementations can use 20 traditional RTP functions for source identification, but the mixer 21 source switching performance is limited when using the default 22 transmission with redundancy. 24 An enhancement for RFC 4103 real-time text mixing is provided in the 25 present specification, suitable for a centralized conference model 26 that enables source identification and efficient source switching. 27 The intended use is for real-time text mixers and multi-party-aware 28 participant endpoints. The mechanism builds on use of the CSRC list 29 in the RTP packet and an extended packet format 'text/rex'. 31 A capability exchange is specified so that it can be verified that a 32 participant can handle the multi-party coded real-time text stream. 33 The capability is indicated by the media subtype "text/rex". 35 The document updates RFC 4102[RFC4102] and RFC 4103[RFC4103] 37 A brief description about how a mixer can format text for the case 38 when the endpoint is not multi-party aware is also provided. 40 Status of This Memo 42 This Internet-Draft is submitted in full conformance with the 43 provisions of BCP 78 and BCP 79. 45 Internet-Drafts are working documents of the Internet Engineering 46 Task Force (IETF). Note that other groups may also distribute 47 working documents as Internet-Drafts. The list of current Internet- 48 Drafts is at https://datatracker.ietf.org/drafts/current/. 50 Internet-Drafts are draft documents valid for a maximum of six months 51 and may be updated, replaced, or obsoleted by other documents at any 52 time. It is inappropriate to use Internet-Drafts as reference 53 material or to cite them other than as "work in progress." 55 This Internet-Draft will expire on 21 November 2020. 57 Copyright Notice 59 Copyright (c) 2020 IETF Trust and the persons identified as the 60 document authors. All rights reserved. 62 This document is subject to BCP 78 and the IETF Trust's Legal 63 Provisions Relating to IETF Documents (https://trustee.ietf.org/ 64 license-info) in effect on the date of publication of this document. 65 Please review these documents carefully, as they describe your rights 66 and restrictions with respect to this document. Code Components 67 extracted from this document must include Simplified BSD License text 68 as described in Section 4.e of the Trust Legal Provisions and are 69 provided without warranty as described in the Simplified BSD License. 71 Table of Contents 73 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 74 1.1. Selected solution and considered alternative . . . . . . 4 75 1.2. Nomenclature . . . . . . . . . . . . . . . . . . . . . . 4 76 1.3. Intended application . . . . . . . . . . . . . . . . . . 5 77 2. Use of fields in the RTP packets . . . . . . . . . . . . . . 5 78 3. Actions at transmission by a mixer . . . . . . . . . . . . . 8 79 4. Actions at reception . . . . . . . . . . . . . . . . . . . . 10 80 5. RTCP considerations . . . . . . . . . . . . . . . . . . . . . 11 81 6. Chained operation . . . . . . . . . . . . . . . . . . . . . . 11 82 7. Usage without redundancy . . . . . . . . . . . . . . . . . . 12 83 8. Use with SIP centralized conferencing framework . . . . . . . 12 84 9. Media Subtype Registration . . . . . . . . . . . . . . . . . 12 85 10. SDP considerations . . . . . . . . . . . . . . . . . . . . . 14 86 10.1. Security for session control and media . . . . . . . . . 14 87 10.2. SDP offer/answer examples . . . . . . . . . . . . . . . 14 88 11. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 16 89 12. Performance considerations . . . . . . . . . . . . . . . . . 19 90 13. Presentation level considerations . . . . . . . . . . . . . . 19 91 13.1. Presentation by multi-party aware endpoints . . . . . . 20 92 13.2. Multi-party mixing for multi-party unaware endpoints . . 22 93 14. Gateway Considerations . . . . . . . . . . . . . . . . . . . 27 94 14.1. Gateway considerations with Textphones (e.g. TTYs). . . 28 95 14.2. Gateway considerations with WebRTC. . . . . . . . . . . 28 96 15. Updates to RFC 4102 and RFC 4103 . . . . . . . . . . . . . . 29 97 16. Congestion considerations . . . . . . . . . . . . . . . . . . 29 98 17. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 29 99 18. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29 100 19. Security Considerations . . . . . . . . . . . . . . . . . . . 29 101 20. Change history . . . . . . . . . . . . . . . . . . . . . . . 29 102 20.1. Changes included in 103 draft-ietf-avtcore-multi-party-rtt-mix-02 . . . . . . . 30 104 20.2. Changes to draft-ietf-avtcore-multi-party-rtt-mix-01 . . 30 105 20.3. Changes from 106 draft-hellstrom-avtcore-multi-party-rtt-source-03 to 107 draft-ietf-avtcore-multi-party-rtt-mix-00 . . . . . . . 30 108 20.4. Changes from 109 draft-hellstrom-avtcore-multi-party-rtt-source-02 to 110 -03 . . . . . . . . . . . . . . . . . . . . . . . . . . 30 111 20.5. Changes from 112 draft-hellstrom-avtcore-multi-party-rtt-source-01 to 113 -02 . . . . . . . . . . . . . . . . . . . . . . . . . . 31 114 20.6. Changes from 115 draft-hellstrom-avtcore-multi-party-rtt-source-00 to 116 -01 . . . . . . . . . . . . . . . . . . . . . . . . . . 32 117 21. References . . . . . . . . . . . . . . . . . . . . . . . . . 32 118 21.1. Normative References . . . . . . . . . . . . . . . . . . 32 119 21.2. Informative References . . . . . . . . . . . . . . . . . 33 120 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 34 122 1. Introduction 124 RFC 4103[RFC4103] specifies use of RFC 3550 RTP [RFC3550] for 125 transmission of real-time text (RTT) and the "text/t140" format. It 126 also specifies a redundancy format "text/red" for increased 127 robustness. RFC 4102 [RFC4102] registers the "text/red" format. 128 Regional regulatory requirements specify provision of real-time text 129 in multi-party calls. 131 The redundancy scheme enables efficient transmission of redundant 132 text in packets together with new text. However the redundant header 133 format has no source indicators for the redundant transmissions. An 134 assumption has had to be made that the redundant parts in a packet 135 are from the same source as the new text. The recommended 136 transmission is one new and two redundant generations of text 137 (T140blocks) in each packet and the recommended transmission interval 138 is 300 ms. 140 A mixer, selecting between text input from different sources and 141 transmitting it in a common stream needs to make sure that the 142 receiver can assign the received text to the proper sources for 143 presentation. Therefore, using RFC 4103 without any extra rule for 144 source identification, the mixer needs to stop sending new text from 145 that source and then make sure that all text so far has been sent 146 with all intended redundancy levels (usually two) before switching 147 source. That causes the very long time of one second to switch 148 between transmission of text from one source to text from another 149 source. Both the total throughput and the switching performance in 150 the mixer is too low for most applications. 152 A more efficient source identification scheme requires that each 153 redundant T140block has its source individually preserved. The 154 present specification introduces a source indicator by specific rules 155 for populating the CSRC-list and the redundancy header in the RTP- 156 packet. 158 An extended packet format 'text/rex' is specified for this purpose, 159 providing the possibility to include text from up to 16 sources in 160 each packet in order to enhance mixer source switching performance. 162 A negotiation mechanism can therefore be based on selection between 163 the "text/red" and the "text/rex" media formats for verification that 164 the receiver is able to handle the multi-party coded stream. 166 A fall-back mixing procedure is specified for cases when the 167 negotiation results in "text/red" being the only common submedia 168 format. 170 The document updates RFC 4102[RFC4102] and RFC 4103[RFC4103] by 171 introducing an extended packet format for the multi-party mixing case 172 and more strict rules for the use of redundancy. 174 1.1. Selected solution and considered alternative 176 The mechanism specified in the present document makes use of the RTP 177 mixer model specified in RFC3550[RFC3550]. From some points of view, 178 use of the RTP translator model specified in RFC 3550 would be more 179 efficient, because then the text packets can pass the translator with 180 only minor modification. However, there may be a lack of support for 181 the translator model in existing RTP implementations, and therefore 182 the more common RTP-mixer model was selected. 184 1.2. Nomenclature 186 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 187 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 188 document are to be interpreted as described in [RFC2119]. 190 The terms SDES, CNAME, NAME, SSRC, CSRC, CSRC list, CC are explained 191 in [RFC3550] 192 The term "T140block" is defined in RFC 4103 [RFC4103] to contain one 193 or more T.140 code elements. 195 1.3. Intended application 197 The scheme for identification of source of redundant transmissions is 198 intended for transmission from entities taking the mixer role in 199 centralised mixing configurations for RTT. It is intended for 200 reception by both endpoints and mixers. 202 2. Use of fields in the RTP packets 204 RFC 4103[RFC4103] specifies use of RFC 3550 RTP[RFC3550], and a 205 redundancy format "text/red" for increased robustness of real-time 206 text transmission. The current specification updates RFC 207 4102[RFC4102] and RFC 4103[RFC4103] by introducing a rule for 208 populating and using the CSRC-list in the RTP packet and extending 209 the redundancy header in order to enhance the performance in multi- 210 party RTT sessions. 212 The "text/rex" format is an "n-tuple" of the "text/red" format 213 intended to carry text information from up to 16 sources per packet. 214 The CSRC members, the redundancy header and the T140block areas SHALL 215 be populated with a number of the same fields as they are specified 216 in RFC 4103[RFC4103] appended in the same order as the sources appear 217 in the CSRC list. The most recent text should be placed as the last 218 text element. 220 When transmitted from a mixer, the members in the CSRC-list SHALL 221 contain the SSRCs of the sources of the T140blocks in the packet. 222 The order of the CSRC members MUST be the same as the order of 223 sources of the T140blocks and redundant header fields. When 224 redundancy is used, text from all included sources MUST have the same 225 number of redundancy generations. The primary, first redundant, 226 second redundant and possible further redundant generations of 227 T140blocks MUST be grouped per source in the packet in "source 228 groups". The recommended level of redundancy is to use one primary 229 and two redundant generations of T140blocks. In some cases, a 230 primary or redundant T140block is empty, but is still represented by 231 a member in the redundancy header. 233 The CC field SHALL show the number of members in the CSRC list. 235 The RTP header is followed by one or more source groups of data block 236 headers: one header for each text block to be included. Each of 237 these headers except the last provides the timestamp offset and 238 length of the corresponding data block, in addition to the payload 239 type number corresponding to the payload format "text/t140". The 240 data block headers are followed by the data fields carrying 241 T140blocks from the sources. Finally, the most recent T140block (if 242 any) follows. 244 0 1 2 3 245 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 246 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 247 |F| block PT | timestamp offset | block length | 248 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 250 The bits in the header are specified as follows: 252 F: 1 bit First bit in header indicates whether another header block 253 follows. It has value 1 if further header blocks follow, and 254 value 0 if this is the last header block. 256 block PT: 7 bits RTP payload type number for this block, 257 corresponding to the t140 payload type. 259 timestamp offset: 14 bits Unsigned offset of timestamp of this block 260 relative to timestamp given in RTP header. The offset is a time 261 to be subtracted from the current timestamp to determine the 262 timestamp of the data when this block was received to the mixer. 263 For primary data from a mixer, the resulting time is the time when 264 the data or the youngest part of the data was received by the 265 mixer. For primary data from an endpoint, only one primary data 266 is included last in the packet. If the timestamp offset would be 267 >15 000, it is set to 15 000. For redundant data, the resulting 268 time the resulting time is the time when the data was sent as 269 primary. If the value would be >15 000, then it SHALL be set to 270 15 000 plus 300 times the redundancy level of the data. The high 271 values appear only in exceptional cases, e.g. when some data has 272 been held in order to keep the text flow under the cps limit. 274 block length: 10 bits Length in bytes of the corresponding data 275 block excluding header. 277 The last data block is placed last in the packet. The timestamp and 278 block-length fields are derived from the header of this block, since 279 they may be determined from the RTP header and overall packet length. 280 The header for the final block comprises only a zero F bit, and the 281 block payload type number information corresponding to the t140 282 format, a total of 8 bits. This is illustrated in the figure below: 284 0 1 2 3 4 5 6 7 285 +-+-+-+-+-+-+-+-+ 286 |0| Block PT | 287 +-+-+-+-+-+-+-+-+ 289 This specification departs from section 4 of RFC 2198 [RFC2198] which 290 associates the whole of the CSRC-list with the primary data and 291 assumes that the same list applies to reconstructed redundant data. 292 In the present specification a T140block is associated with exactly 293 one CSRC list member as described above. Also RFC 2198 [RFC2198] 294 anticipates infrequent change to CSRCs; implementers should be aware 295 that the order of the CSRC-list according to this specification will 296 vary during transitions between transmission from the mixer of text 297 originated by different participants. 299 The picture below shows a typical 'text/rex' RTP packet with multi- 300 party RTT contents and coding according to the present specification. 302 0 1 2 3 303 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 304 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 305 |V=2|P|X| CC=3 |M| "REX" PT | RTP sequence number | 306 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 307 | timestamp of packet creation | 308 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 309 | synchronization source (SSRC) identifier | 310 +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ 311 | CSRC list member 1 = SSRC of source of "A" | 312 | CSRC list member 2 = SSRC of source of "B" | 313 | CSRC list member 3 = SSRC of source of "C" | 314 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 315 |1| T140 PT |timestmp offset of "A-R2" |"A-R2" block length| 316 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 317 |1| T140 PT |timestamp offset of "A-R1" |"A-R1" block length| 318 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 319 |1| T140 PT | timestamp offset of "A-P" |"A-P" block length | 320 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 321 |1| T140 PT |timestamp offset of "B-R2" |"B-R2" block length| 322 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 323 |1| T140 PT |timestamp offset of "B-R1" |"B-R1" block length| 324 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 325 |1| T140 PT | timestamp offset of "B-P" | "B-P" block length| 326 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 327 |1| T140 PT |timestamp offset of "C-R2" |"C-R2" block length| 328 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 329 |1| T140 PT |timestamp offset of "C-R1" |"C-R1" block length| 330 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 331 |0| T140 PT | "A-R2" T.140 encoded redundant data | 332 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---------------+ 333 | | "A-R1" T.140 encoded redundant data | | 334 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---------------+ 335 | "A-P" T.140 encoded primary data | | 336 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---------------+ 337 | "B-R2" T.140 encoded redundant data | | 338 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---------------+ 339 | | "B-R1" T.140 encoded redundant data | | 340 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---------------+ 341 | "B-P" T.140 encoded primary data | | 342 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---------------+ 343 | "C-R2" T.140 encoded redundant data | | 344 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---------------+ 345 | | "C-R1" T.140 encoded redundant data | | 346 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 347 | "C-P" T.140 encoded primary data | 348 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 349 Figure 1:A 'text/rex' packet with text from three sources A, B, C. 351 3. Actions at transmission by a mixer 353 A "text/rex" transmitter is sending packets at least at regular 354 transmission intervals as long as there is something (new or 355 redundant T140blocks) to transmit. The default transmission interval 356 that SHOULD be applied is 300 ms. 358 As soon as a participant is known to participate in a session and 359 being available for text reception, a Unicode BOM character SHALL be 360 sent to it according to the procedures in the present document. 362 After that, the transmitter SHALL send keep-alive traffic to the 363 receivers at regular intervals when no other traffic has occurred 364 during that interval if that is decided for the actual connection. 365 Recommendations for keep-alive can be found in RFC 6263[RFC6263]. 367 For multi-party operation, it is RECOMMENDED that the mixer sends a 368 packet to each receiver as soon as text has been received from a 369 source as long as the maximum number of characters per second 370 indicated by the recipient is not exceeded, and also the number of 371 packets sent per second to a recipient is kept under a specified 372 number. This number SHALL be 10 if no other limit is applied for the 373 application. The intention is to keep the latency introduced by the 374 mixer low. 376 The mixer has its own SSRC, and its own RTP sequence number series. 378 The number of redundant generations of T140blocks to include in 379 transmitted packets SHALL be deducted from the SDP negotiation. It 380 SHOULD be set to the minimum of the number declared by the receiver 381 and the transmitter. The same number of redundant generations MUST 382 be used for all sources in the transmissions. The number of 383 generations sent to a receiver SHALL be the same during the whole 384 session unless it is modified by session renegotiation. 386 At time of transmission, the mixer SHALL populate the RTP packet with 387 T140blocks combined from all T140blocks queued for transmission 388 originating from each source as long as this is not in conflict with 389 the allowed number of characters per second or the maximum packet 390 size. These T140blocks SHALL be placed in the packet interleaved 391 with redundant T140blocks and new T140blocks from other sources. The 392 primary and redundant T140blocks from each source are grouped 393 together in "source groups" appearing in the packet in the same order 394 as the corresponding CSRC list member and redundancy header members 395 for the source group. The format of the redundancy header members 396 and the T140blocks in each source group are the same as for the 397 single source possible in the "text/red" format. The SSRC of each 398 source shall be placed as a member in the CSRC-list at a place 399 corresponding to the place of its T140blocks in the packet. The 400 current time SHALL be inserted in the timestamp. The timestamp 401 offset values for empty T140blocks have no relevance but SHOULD be 402 assigned realistic values. 404 Text from a maximum of 16 sources MAY be included in a packet. The 405 reason for this limitation is the maximum number of CSRC list 406 members. If text from more sources need to be transmitted, the mixer 407 MAY let the sources take turns in having their text transmitted. 408 When stopping transmission of one source to allow another source to 409 have its text sent, all intended redundant generations of the last 410 text from the source to be stopped MUST be transmitted before text 411 from another source can be transmitted. Actively transmitting 412 sources SHOULD be allowed to take turns with short intervals to have 413 their text transmitted. 415 If no unsent T140blocks were available at this time for a source, but 416 T140blocks are available which have not yet been sent the full 417 intended number of redundant transmissions, then the primary 418 T140block for that source is composed of an empty T140block, and 419 populated (without taking up any length) in a packet for 420 transmission. The corresponding SSRC SHALL be placed in its place in 421 the CSRC-list. 423 The primary T140block from each source in the latest transmission is 424 used to populate the first redundant T140block for that source. The 425 first redundant T140block for that source from the latest 426 transmission is placed as the second redundant T140block source. 428 Usually this is the level of redundancy used. If a higher number of 429 redundancy is negotiated, then the procedure SHALL be maintained 430 until all available redundant levels of T140blocks and their sources 431 are placed in the packet. If a receiver has negotiated a lower 432 number of text/rex generations, then that level shall be the maximum 433 used by the transmitter. 435 The timer offset values are inserted in the redundancy header, with 436 the time offset from the RTP timestamp in the packet when the 437 corresponding T140block was sent from the mixer as primary. 439 The number of members in the CSRC list shall be placed in the "CC" 440 header field. Only mixers place values >0 in the "CC" field. 442 When there is no new T140block to transmit, and no redundant 443 T140block that has not been retransmitted the intended number of 444 times, the transmission process can stop until either new T140blocks 445 arrive, or a keep-alive method calls for transmission of keep-alive 446 packets. 448 4. Actions at reception 450 The "text/rex" receiver included in an endpoint with presentation 451 functions will receive RTP packets in the single stream from the 452 mixer, and SHALL distribute the T140blocks for presentation in 453 presentation areas for each source. Other receiver roles, such as 454 gateways or chained mixers are also feasible, and requires 455 consideration if the stream shall just be forwarded, or distributed 456 based on the different sources. 458 If the "CC" field value of a received packet is >1, it indicates that 459 multi-party transmission is active, and the receiver MUST act on the 460 different sources according to its role. If the CC field value is 1, 461 it indicates that there is a mixer between the source and the 462 receiver, but that there is only one source at the moment. If the CC 463 value is 0, the connection is point-to-point. 465 The used level of redundancy generations SHALL be evaluated from the 466 received packet contents. If the CC value is 0, the number of 467 generations (including the primary) is equal to the number of members 468 in the redundancy header. If the CC value is >0, the number of 469 generations (including the primary) is equal to the number of members 470 in the redundancy header divided by the CC value. If the remainder 471 from the division is >0, then the packet is malformed and SHALL cause 472 an error indication in the receiver. 474 The RTP sequence numbers of the received packets SHALL be monitored 475 for gaps and packets out of order. 477 As long as the sequence is correct, each packet SHALL be unpacked in 478 order. The T140blocks SHALL be extracted from the primary areas, and 479 the corresponding SSRCs SHALL be extracted from the corresponding 480 positions in the CSRC list and used for assigning the new T140block 481 to the correct presentation areas (or correspondingly). 483 If a sequence number gap appears and is still there after some 484 defined time for jitter resolution, T140data SHALL be recovered from 485 redundant data. If the gap is wider than the number of generations 486 of redundant T140blocks in the packet, then a t140block SHALL be 487 created with a marker for text loss [T140ad1] and assigned to the 488 SSRC of the transmitter as a general input from the mixer because in 489 general it is not possible to deduct from which sources text was 490 lost. 492 Then, the T140blocks in the received packet SHALL be retrieved 493 beginning with the highest redundant generation, grouping them with 494 the corresponding SSRC from the CSRC-list and assigning them to the 495 presentation areas per source. Finally the primary T140blocks SHALL 496 be retrieved from the packet and similarly their sources retrieved 497 from the corresponding positions in the CSRC-list, and then assigned 498 to the corresponding presentation areas for the sources. 500 If the sequence number gap was equal to or less than the number of 501 redundancy generations in the received packet, a missing text marker 502 SHALL NOT be inserted, and instead the T140blocks and their SSRCs 503 fully recovered from the redundancy information and the CSRC-list in 504 the way indicated above. 506 Unicode character BOM is used as a start indication and sometimes 507 used as a filler or keep alive by transmission implementations. 508 These SHALL be deleted on reception. 510 Empty T140blocks are included as fillers for unused redundancy levels 511 in the packets. They just do not provide any contents and do not 512 contribute to the received streams. 514 5. RTCP considerations 516 A mixer SHALL send RTCP reports with SDES, CNAME and NAME information 517 about the sources in the multi-party call. This makes it possible 518 for participants to compose a suitable label for text from each 519 source. 521 6. Chained operation 523 By strictly applying the rules for "text/rex" packet format by all 524 conforming devices, mixers MAY be arranged in chains. 526 7. Usage without redundancy 528 The "text/rex" format SHALL be used also for multi-party 529 communication when the redundancy mechanism is not used. That MAY be 530 the case when robustness in transmission is provided by some other 531 means than by redundancy. All aspects of the present document SHALL 532 be applied except the redundant generations in transmission. 534 The "text/rex" format SHOULD thus be used for multi-party operation, 535 also when some other protection against packet loss is utilized, for 536 example a reliable network or transport. The format is also allowed 537 to be used for point-to-point operation. 539 8. Use with SIP centralized conferencing framework 541 The SIP conferencing framework, mainly specified in RFC 542 4353[RFC4353], RFC 4579[RFC4579] and RFC 4575[RFC4575] is suitable 543 for coordinating sessions including multi-party RTT. The RTT stream 544 between the mixer and a participant is one and the same during the 545 conference. Participants get announced by notifications when 546 participants are joining or leaving, and further user information may 547 be provided. The SSRC of the text to expect from joined users MAY be 548 included in a notification. The notifications MAY be used both for 549 security purposes and for translation to a label for presentation to 550 other users. 552 Note: The CSRC-list in an RTP packet only includes participants who's 553 text is included in one or more text blocks. It is not the same as 554 the total list of participants in a conference. With audio and video 555 media, the CSRC-list would often contain all participants who are not 556 muted whereas text participants that don't type are completely silent 557 and thus are not represented in RTP packet CSRC-lists. 559 9. Media Subtype Registration 561 This registration is done using the template defined in [RFC6838] and 562 following [RFC4855]. 564 Type name: text 566 Subtype name: rex 567 Required parameters: rate: The RTP timestamp (clock) rate. The 568 only valid value is 1000. 570 pt: A slash-separated list with the payload 571 type number(pt) for the primary text, the first redundant text, 572 the second redundant text etc, that the receiver is capable to 573 receive. 575 Optional parameter: cps: This parameter is used to signal the 576 capabilities of a receiver implementation. It indicates the 577 maximum number of characters that may be received per second 578 measured over a period of 10 seconds. The default value is 150. 580 Encoding considerations: binary; see Section 4.8 of [RFC6838]. 582 Security considerations: See Section 19 of RFC xxxx. [RFC Editor: 583 Upon publication as an RFC, please replace "XXXX" with the number 584 assigned to this document and remove this note.] 586 Interoperability considerations: None. 588 Published specification: RFC XXXX. [RFC Editor: Upon publication as 589 an RFC, please replace "XXXX" with the number assigned to this 590 document and remove this note.] 592 Applications which use this media type: For example: Text 593 conferencing tools, multimedia conferencing tools. 595 Fragment identifier considerations: N/A. 597 Additional information: None. 599 Person & email address to contact for further information: Gunnar 600 Hellstrom 602 Intended usage: COMMON 604 Restrictions on usage: This media type depends on RTP framing, and 605 hence is only defined for transfer via RTP [RFC3550]. 607 Author: Gunnar Hellstrom 609 Change controller: IETF AVTCore Working Group delegated from the 610 IESG. 612 10. SDP considerations 614 There are receiving RTT implementations which implement RFC 4103 615 [RFC4103] but not the source separation by the CSRC. Sending mixed 616 text according to the usual CSRC convention from RFC 2198 [RFC2198] 617 to a device implementing only RFC 4103 [RFC4103] would risk to lead 618 to unreadable presented text. Therefore, in order to negotiate RTT 619 mixing capability according to the present specification, all devices 620 supporting the present specification for multi-party aware 621 participants SHALL include an sdp media format "text/rex" in the sdp, 622 indicating this capability in offers and answers. Multi-party 623 streams using the coding of the present specification intended for 624 multi-party aware endpoints MUST NOT be sent to devices which have 625 not indicated the "text/rex" format. 627 Implementations not understanding this format MUST ignore it 628 according to common SDP rules. 630 The sdp media format defined here, is named "rex", for extended 631 redundancy. It is intended to be used in "text" media descriptions 632 with "text/rex" and "text/t140" formats. Both formats MUST be 633 declared for the "text/rex" format to be used. It indicates 634 capability to use source indications in the CSRC list and the packet 635 format according to the present specification. It also indicates 636 ability to receive 150 real-time text characters per second. 638 10.1. Security for session control and media 640 Security SHOULD be applied on both session control and media. In 641 applications where legacy endpoints without security may exist, a 642 negotiation between security and no security SHOULD be applied. If 643 no other security solution is mandated by the application, then RFC 644 8643 OSRTP[RFC8643] SHOULD be applied to negotiate SRTP media 645 security with DTLS. Most SDP examples below are expressed without 646 the security additions for simplicity. The principles (but not all 647 details) for applying DTLS-SRTP security is shown in a couple of the 648 following examples. 650 10.2. SDP offer/answer examples 652 Offer example for just multi-party capability: 654 m=text 11000 RTP/AVP 101 98 655 a=rtpmap:98 t140/1000 656 a=rtpmap:101 rex/1000 657 a=fmtp:101 98/98/98 659 Answer example from a multi-party capable device 660 m=text 12000 RTP/AVP 101 98 661 a=rtpmap:98 t140/1000 662 a=rtpmap:101 rex/1000 663 a=fmtp:101 98/98/98 665 Offer example for both traditional "text/red" and multi-party format: 667 m=text 11000 RTP/AVP 101 100 98 668 a=rtpmap:98 t140/1000 669 a=rtpmap:100 red/1000 670 a=rtpmap:101 rex/1000 671 a=fmtp:100 98/98/98 672 a=fmtp:101 98/98/98 674 Answer example from a multi-party capable device 675 m=text 11000 RTP/AVP 101 98 676 a=rtpmap:98 t140/1000 677 a=rtpmap:101 rex/1000 678 a=fmtp:101 98/98/98 680 Offer example for both traditional "text/red" and multi-party format 681 including security: 682 a=fingerprint: SHA-1 \ 683 4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB 684 m=text 11000 RTP/AVP 101 100 98 685 a=rtpmap:98 t140/1000 686 a=rtpmap:100 red/1000 687 a=rtpmap:101 rex/1000 688 a=fmtp:100 98/98/98 689 a=fmtp:101 98/98/98 691 The "Fingerprint" is sufficient to offer DTLS-SRTP, with the media 692 line still indicating RTP/AVP. 694 Answer example from a multi-party capable device including security 695 a=fingerprint: SHA-1 \ 696 FF:FF:FF:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB 697 m=text 11000 RTP/AVP 101 98 698 a=rtpmap:98 t140/1000 699 a=rtpmap:101 rex/1000 700 a=fmtp:101 98/98/98 702 With the "fingerprint" the device acknowledges use of SRTP/DTLS. 704 Answer example from a multi-party unaware device that also 705 does not support security: 707 m=text 12000 RTP/AVP 100 98 708 a=rtpmap:98 t140/1000 709 a=rtpmap:100 red/1000 710 a=fmtp:100 98/98/98 712 A party who has negotiated the "text/rex" format MUST populate the 713 CSRC-list and format the packets according to the present 714 specification if it acts as an rtp-mixer and sends multi-party text. 716 A party who has negotiated the "text/rex" capability MUST interpret 717 the contents of the CSRC-list and the packets according to the 718 present specification in received rtp packets using the corresponding 719 payload type. 721 A party performing as a mixer, which has not negotiated the "text/ 722 rex" format, but negotiated a "text/red" or "text/t140" format in a 723 session with a participant SHOULD, if nothing else is specified for 724 the application, format transmitted text to that participant to be 725 suitable to present on a multi-party unaware endpoint as further 726 specified in section Section 13.2. 728 11. Examples 730 This example shows a symbolic flow of packets from a mixer with loss 731 and recovery. A, B and C are sources of RTT. M is the mixer. Pn 732 indicates primary data in source group "n". Rn1 is first redundant 733 generation data and Rn2 is second redundant generation data in source 734 group "n". A1, B1, A2 etc are text chunks (T140blocks) received from 735 the respective sources. X indicates dropped packet between the mixer 736 and a receiver. 738 |----------------| 739 |Seq no 1 | 740 |CC=1 | 741 |CSRC list A | 742 |R12: Empty | 743 |R11: Empty | 744 |P1: A1 | 745 |----------------| 747 Assuming that earlier packets were received in sequence, text A1 is 748 received from packet 1 and assigned to reception area A. 750 |----------------| 751 |Seq no 2 | 752 |CC=3 | 753 |CSRC list C,A | 754 |R12 Empty | 755 |R11:Empty | 756 |P1: C1 | 757 |R22 Empty | 758 |R21: A1 | 759 |P2: Empty | 760 |----------------| 761 Text C1 is received from packet 2 and assigned to reception area C. 763 X----------------| 764 X Seq no 3 | 765 X CC=2 | 766 X CSRC list C,A | 767 X R12: Empty | 768 X R11: C1 | 769 X P1: Empty | 770 X R22: A1 | 771 X R21: Empty | 772 X P2: A2 | 773 X----------------| 774 Packet 3 is assumed to be dropped in network problems 776 X----------------| 777 X Seq no 4 | 778 X CC=3 | 779 X CSRC list C,B,A| 780 X R12: Empty | 781 X R11: Empty | 782 X P1: C2 | 783 X R22: Empty | 784 X R21: Empty | 785 X P2: B1 | 786 X R32: Empty | 787 X R31: A2 | 788 X P3: A3 | 789 X----------------| 790 Packet 4 is assumed to be dropped in network problems 791 X----------------| 792 X Seq no 5 | 793 X CC=3 | 794 X CSRC list C,B,A| 795 X R12: Empty | 796 X R11: C2 | 797 X P1: Empty | 798 X R22: Empty | 799 X R21: B1 | 800 X P2: B2 | 801 X R32: A2 | 802 X R31: A3 | 803 X P3: A4 | 804 X----------------| 805 Packet 5 is assumed to be dropped in network problems 807 |----------------| 808 |Seq no 6 | 809 |CC=3 | 810 |CSRC list C,B,A | 811 | R12: C2 | 812 | R11: Empty | 813 | P1: Empty | 814 | R22: B1 | 815 | R21: B2 | 816 | P2: B3 | 817 | R32: A3 | 818 | R31: A4 | 819 | P3: A5 | 820 |----------------| 821 Packet 6 is received. The latest received sequence number was 2. 822 Recovery is therefore tried for 3,4,5. But there is no coverage 823 for seq no 3. A missing text mark (U'FFFD) is created and 824 appended to the common mixer reception area. 825 For seqno 4, texts C2, B1 and A3 are recovered and appended to 826 their respective reception areas. 827 For seqno 5, texts B2 and A4 are recovered and appended to their 828 respective reception areas. 829 Primary text B3 and A5 are received and appended to their 830 respective reception areas. 832 With only one or two packets lost, there would not be any need to 833 create a missing text marker, and all text would be recovered. 835 It will be a design decision how to present the missing text markers 836 assigned to the mixer as a source. 838 12. Performance considerations 840 This specification allows new text from 16 sources per packet. 841 Packets SHOULD be transmitted with a maximum time interval when there 842 is text to be transmitted (either primary or redundant) . The default 843 maximum transmission interval is 300 ms. It is also RECOMMENDED for 844 the mixer to send a packet as soon as text has been received from a 845 source as long as the maximum number of characters per second 846 indicated by the recipient is not exceeded, and also the number of 847 packets sent per second to a recipient is kept under a number. In 848 order to achieve good performance, a receiver for multi-party calls 849 SHOULD declare a sufficient CPS value in SDP for the number of 850 allowable characters per second. These characteristics provide for 851 smooth flow of text with acceptable latency from at least 32 sources 852 simultaneously. 854 The default maximum rate of reception of real-time text is in RFC 855 4103 [RFC4103] specified to be 30 characters per second. The value 856 MAY be modified in the CPS parameter of the FMTP attribute in the 857 media section for RFC 4103. A mixer combining real-time text from a 858 number of sources may have a higher combined flow of text coming from 859 the sources. Endpoints SHOULD therefore specify a suitable higher 860 value for the CPS parameter, corresponding to its real reception 861 capability. A value for CPS of 150 is the default for the "text/rex" 862 format. See RFC 4103 [RFC4103] for the format and use of the CPS 863 parameter. The same rules apply for the "text/rex" format except for 864 the default value. 866 13. Presentation level considerations 868 ITU-T T.140 [T140] provides the presentation level requirements for 869 the RFC 4103 [RFC4103] transport. T.140 [T140] has functions for 870 erasure and other formatting functions and has the following general 871 statement for the presentation: 873 "The display of text from the members of the conversation should be 874 arranged so that the text from each participant is clearly readable, 875 and its source and the relative timing of entered text is visualized 876 in the display. Mechanisms for looking back in the contents from the 877 current session should be provided. The text should be displayed as 878 soon as it is received." 879 Strict application of T.140 [T140] is of essence for the 880 interoperability of real-time text implementations and to fulfill the 881 intention that the session participants have the same information of 882 the text contents of the conversation without necessarily having the 883 exact same layout of the conversation. This also includes the 884 ability to ignore optional presentation control codes not supported 885 by a receiving application. 887 T.140 [T140] specifies a set of presentation control codes to include 888 in the stream. Some of them are optional. Implementations MUST be 889 able to ignore optional control codes that they do not support. 891 There is no strict "message" concept in real-time text. Line 892 Separator SHALL be used as a separator allowing a part of received 893 text to be grouped in presentation. The characters "CRLF" may be 894 used by other implementations as replacement for Line Separator. The 895 "CRLF" combination SHALL be erased by just one erasing action, just 896 as the Line Separator. Presentation functions are allowed to group 897 text for presentation in smaller groups than the line separators 898 imply and present such groups with source indication together with 899 text groups from other sources (see the following presentation 900 examples). Erasure has no specific limit by any delimiter in the 901 text stream. 903 13.1. Presentation by multi-party aware endpoints 905 A multi-party aware receiving party, presenting real-time text MUST 906 separate text from different sources and present them in separate 907 presentation areas. The receiving party MAY separate presentation of 908 parts of text from a source in readable groups based on other 909 criteria than line separator and merge these groups in the 910 presentation area when it benefits the user to most easily find and 911 read text from the different participants. The criteria MAY e.g. be 912 a received comma, full stop, or other phrase delimiters, or a long 913 pause. 915 When text is received from multiple original sources, the 916 presentation SHOULD provide a view where text is added in multiple 917 places simultaneously. 919 If the presentation presents text from different sources in one 920 common area, the presenting endpoint SHOULD insert text from the 921 local user ended at suitable points merged with received text to 922 indicate the relative timing for when the text groups were completed. 923 In this presentation mode, the receiving endpoint SHALL present the 924 source of the different groups of text. 926 A view of a three-party RTT call in chat style is shown in this 927 example . 929 _________________________________________________ 930 | | | 931 |[Alice] Hi, Alice here. | | 932 | | | 933 |[Bob] Bob as well. | | 934 | | | 935 |[Eve] Hi, this is Eve, calling from Paris. | | 936 | I thought you should be here. | | 937 | | | 938 |[Alice] I am coming on Thursday, my | | 939 | performance is not until Friday morning.| | 940 | | | 941 |[Bob] And I on Wednesday evening. | | 942 | | | 943 |[Alice] Can we meet on Thursday evening? | | 944 | | | 945 |[Eve] Yes, definitely. How about 7pm. | | 946 | at the entrance of the restaurant | | 947 | Le Lion Blanc? | | 948 |[Eve] we can have dinner and then take a walk | | 949 | | | 950 | But I need to be back to | | 951 | the hotel by 11 because I need | | 952 | |-| 953 | I wou |-| 954 |______________________________________________|v| 955 | of course, I underst | 956 |________________________________________________| 958 Figure 2: Example of a three-party RTT call presented in chat style. 960 Other presentation styles than the chat style may be arranged. 962 This figure shows how a coordinated column view MAY be presented. 964 _____________________________________________________________________ 965 | Bob | Eve | Alice | 966 |____________________|______________________|_______________________| 967 | | |I will arrive by TGV. | 968 |My flight is to Orly| |Convenient to the main | 969 | |Hi all, can we plan |station. | 970 | |for the seminar? | | 971 |Eve, will you do | | | 972 |your presentation on| | | 973 |Friday? |Yes, Friday at 10. | | 974 |Fine, wo | |We need to meet befo | 975 |___________________________________________________________________| 977 Figure 3: An example of a coordinated column-view of a three-party 978 session with entries ordered vertically in approximate time-order. 980 13.2. Multi-party mixing for multi-party unaware endpoints 982 When the mixer has indicated multi-party capability in an sdp 983 negotiation, but the multi-party capability negotiation fails with an 984 endpoint, then the mixer SHOULD compose a best-effort presentation of 985 multi-party real-time text in one stream intended to be presented by 986 an endpoint with no multi-party awareness. 988 This presentation format has functional limitations and SHOULD be 989 used only to enable participation in multi-party calls by legacy 990 deployed endpoints. 992 The principles and procedures below do not specify any new protocol 993 elements or behaviors. They are instead composed from the 994 information in ITU-T T.140 [T140] and an ambition to provide a best 995 effort presentation on an endpoint which has functions only for two- 996 party calls. 998 The mixer mixing for multi-party unaware endpoints SHALL compose a 999 simulated limited multi-party RTT view suitable for presentation in 1000 one presentation area. The mixer SHALL group text in suitable groups 1001 and prepare for presentation of them by inserting a new line betwwen 1002 them if the transmitted text did not already end with a new line. A 1003 presentable label SHOULD be composed and sent for the source 1004 initially in the session and after each source switch. With this 1005 procedure the time for source switching is depending on the actions 1006 of the users. In order to expedite source switch, a user can for 1007 example end its turn with a new line. 1009 13.2.1. Actions by the mixer at reception from the call participants 1011 When text is received by the mixer from the different participants, 1012 the mixer SHALL recover text from redundancy if any packets are lost. 1013 The mark for lost text [T140ad1] SHOULD be inserted in the stream if 1014 unrecoverable loss appears. Any Unicode BOM characters, possibly 1015 used for keep-alive shall be deleted. The time of arrival of text 1016 SHALL be stored together with the received text from each source in a 1017 queue for transmission to the recipients. 1019 13.2.2. Actions by the mixer for transmission to the recipients 1021 The following procedure SHOULD be applied for each recipient of 1022 multi-part text from the mixer. 1024 The text for transmission SHOULD be formatted by the mixer for each 1025 receiving user for presentation in one single presentation area. 1026 Text received from a participant SHOULD NOT be included in 1027 transmission to that participant. When there is text available for 1028 transmission from the mixer to a receiving party from more than one 1029 participant, the mixer SHOULD switch between transmission of text 1030 from the different sources at suitable points in the transmitted 1031 stream. 1033 When switching source, the mixer SHOULD insert a line separator if 1034 the already transmitted text did not end with a new line (line 1035 separator or CRLF). A label SHOULD be composed from information in 1036 the CNAME and NAME fields in RTCP reports from the participant to 1037 have its text transmitted, or from other session information for that 1038 user. The label SHOULD be delimited by suitable characters (e.g. '[ 1039 ]') and transmitted. The CSRC SHOULD indicate the selected source. 1040 Then text from that selected participant SHOULD be transmitted until 1041 a new suitable point for switching source is reached. 1043 Seeking a suitable point for switching source SHOULD be done when 1044 there is older text waiting for transmission from any party than the 1045 age of the last transmitted text. Suitable points for switching are: 1047 * A completed phrase ended by comma 1049 * A completed sentence 1051 * A new line (line separator or CRLF) 1053 * A long pause (e.g. > 10 seconds) in received text from the 1054 currently transmitted source 1056 * If text from one participant has been transmitted with text from 1057 other sources waiting for transmission for a long time (e.g. > 1 1058 minute) and none of the suitable points for switching has 1059 occurred, a source switch MAY be forced by the mixer at next word 1060 delimiter, and also if even a word delimiter does not occur within 1061 a time (e.g. 15 seconds) after the scan for word delimiter 1062 started. 1064 When switching source, the source which has the oldest text in queue 1065 SHOULD be selected to be transmitted. A character display count 1066 SHOULD be maintained for the currently transmitted source, starting 1067 at zero after the label is transmitted for the currently transmitted 1068 source. 1070 There SHOULD be a storage for the latest control code for Select 1071 Graphic Rendition (SGR) from each source. If there is an SGR code 1072 stored for the current source before the source switch is done, a 1073 reset of SGR shall be sent by the sequence SGR 0 [009B 0000 006D] 1074 after the new line and before the new label during a source switch. 1075 See SGR below for an explanation. This transmission does not 1076 influence the display count. If there is an SGR code stored for the 1077 new source after the source switch, that SGR code SHOULD be 1078 transmitted to the recipient before the label. This transmission 1079 does not influence the display count. 1081 13.2.3. Actions on transmission of text 1083 Text from a source sent to the recipient SHOULD increase the display 1084 count by one per transmitted character. 1086 13.2.4. Actions on transmission of control codes 1088 The following control codes specified by T.140 require specific 1089 actions. They SHOULD cause specific considerations in the mixer. 1090 Note that the codes presented here are expressed in UCS-16, while 1091 transmission is made in UTF-8 transform of these codes. 1093 BEL 0007 Bell Alert in session, provides for alerting during an 1094 active session. The display count SHOULD not be altered. 1096 NEW LINE 2028 Line separator. Check and perform a source switch if 1097 appropriate. Increase display count by 1. 1099 CR LF 000D 000A A supported, but not preferred way of requesting a 1100 new line. Check and perform a source switch if appropriate. 1101 Increase display count by 1. 1103 INT ESC 0061 Interrupt (used to initiate mode negotiation 1104 procedure). The display count SHOULD not be altered. 1106 SGR 009B Ps 006D Select graphic rendition. Ps is rendition 1107 parameters specified in ISO 6429. The display count SHOULD not be 1108 altered. The SGR code SHOULD be stored for the current source. 1110 SOS 0098 Start of string, used as a general protocol element 1111 introducer, followed by a maximum 256 bytes string and the ST. 1112 The display count SHOULD not be altered. 1114 ST 009C String terminator, end of SOS string. The display count 1115 SHOULD not be altered. 1117 ESC 001B Escape - used in control strings. The display count SHOULD 1118 not be altered for the complete escape code. 1120 Byte order mark FEFF Zero width, no break space, used for 1121 synchronization and keep-alive. SHOULD be deleted from incoming 1122 streams. Shall be sent first after session establishment to the 1123 recipient. The display count shall not be altered. 1125 Missing text mark FFFD Replacement character, marks place in stream 1126 of possible text loss. SHOULD be inserted by the reception 1127 procedure in case of unrecoverable loss of packets. The display 1128 count SHOULD be increased by one when sent as for any other 1129 character. 1131 SGR If a control code for selecting graphic rendition (SGR), other 1132 than reset of the graphic rendition (SGR 0) is sent to a 1133 recipient, that control code shall also be stored for the source 1134 in the storage for SGR. If a reset graphic rendition (SGR 0) 1135 originated from a source is sent, then the SGR storage for that 1136 source shall be cleared. The display count shall not be 1137 increased. 1139 BS 0008 Back Space, intended to erase the last entered character by 1140 a source. Erasure by backspace cannot always be performed as the 1141 erasing party intended. If an erasing action erases all text up 1142 to the end of the leading label after a source switch, then the 1143 mixer must not transmit more backspaces. Instead it is 1144 RECOMMENDED that a letter "X" is inserted in the text stream for 1145 each backspace as an indication of the intent to erase more. A 1146 new line is usually coded by a Line Separator, but the character 1147 combination "CRLF" MAY be used instead. Erasure of a new line is 1148 in both cases done by just one erasing action (Backspace). If the 1149 display count has a positive value it is decreased by one when the 1150 BS is sent. If the display count is at zero, it is not altered. 1152 13.2.5. Packet transmission 1154 A mixer transmitting to a multi-party unaware terminal SHOULD send 1155 primary data only from one source per packet. The SSRC SHOULD be the 1156 SSRC of the mixer. The CSRC list SHOULD contain one member and be 1157 the SSRC of the source of the primary data. 1159 13.2.6. Functional limitations 1161 When a multi-party unaware endpoint presents a conversation in one 1162 display area in a chat style, it inserts source indications for 1163 remote text and local user text as they are merged in completed text 1164 groups. When an endpoint using this layout receives and presents 1165 text mixed for multi-party unaware endpoints, there will be two 1166 levels of source indicators for the received text; one generated by 1167 the mixer and inserted in a label after each source switch, and 1168 another generated by the receiving endpoint and inserted after each 1169 switch between local and remote source in the presentation area. 1170 This will waste display space and look inconsistent to the reader. 1172 New text can be presented only from one source at a time. Switch of 1173 source to be presented takes place at suitable places in the text, 1174 such as end of phrase, end of sentence, line separator and 1175 inactivity. Therefore the time to switch to present waiting text 1176 from other sources may become long and will vary and depend on the 1177 actions of the currently presented source. 1179 Erasure can only be done up to the latest source switch. If a user 1180 tries to erase more text, the erasing actions will be presented as 1181 letter X after the label. 1183 These facts makes it strongly RECOMMENDED to implement multi-party 1184 awareness in RTT endpoints. The use of the mixing method for multi- 1185 party-unaware endpoints should be left for use with endpoints which 1186 are impossible to upgrade to become multi-party aware. 1188 13.2.7. Example views of presentation on multi-party unaware endpoints 1190 The following pictures are examples of the view on a participant's 1191 display for the multi-party-unaware case. 1193 _________________________________________________ 1194 | Conference | Alice | 1195 |________________________|_________________________| 1196 | |I will arrive by TGV. | 1197 |[Bob]:My flight is to |Convenient to the main | 1198 |Orly. |station. | 1199 |[Eve]:Hi all, can we | | 1200 |plan for the seminar. | | 1201 | | | 1202 |[Bob]:Eve, will you do | | 1203 |your presentation on | | 1204 |Friday? | | 1205 |[Eve]:Yes, Friday at 10.| | 1206 |[Bob]: Fine, wo |We need to meet befo | 1207 |________________________|_________________________| 1209 Figure 4: Alice who has a conference-unaware client is receiving the 1210 multi-party real-time text in a single-stream. This figure shows how 1211 a coordinated column view MAY be presented on Alice's device. 1213 _________________________________________________ 1214 | |^| 1215 |[Alice] Hi, Alice here. | | 1216 | | | 1217 |[mix][Bob] Bob as well. | | 1218 | | | 1219 |[Eve] Hi, this is Eve, calling from Paris | | 1220 | I thought you should be here. | | 1221 | | | 1222 |[Alice] I am coming on Thursday, my | | 1223 | performance is not until Friday morning.| | 1224 | | | 1225 |[mix][Bob] And I on Wednesday evening. | | 1226 | | | 1227 |[Eve] we can have dinner and then walk | | 1228 | | | 1229 |[Eve] But I need to be back to | | 1230 | the hotel by 11 because I need |-| 1231 | |-| 1232 |______________________________________________|v| 1233 | of course, I underst | 1234 |________________________________________________| 1236 Figure 5: An example of a view of the multi-party unaware 1237 presentation in chat style. Alice is the local user. 1239 14. Gateway Considerations 1240 14.1. Gateway considerations with Textphones (e.g. TTYs). 1242 Multi-party RTT sessions may involve gateways of different kinds. 1243 Gateways involved in setting up sessions SHALL correctly reflect the 1244 multi-party capability or unawareness of the combination of the 1245 gateway and the remote endpoint beyond the gateway. 1247 One case that may occur is a gateway to PSTN for communication with 1248 textphones (e.g. TTYs). Textphones are limited devices with no 1249 multi-party awareness, and it SHOULD therefore be suitable for the 1250 gateway to not indicate multi-party awareness for that case. Another 1251 solution is that the gateway indicates multi-party capability towards 1252 the mixer, and includes the multi-party mixer function for multi- 1253 party unaware endpoints itself. This solution makes it possible to 1254 make adaptations for the functional limitations of the textphone 1255 (TTY). 1257 14.2. Gateway considerations with WebRTC. 1259 Gateway operation to real-time text in WebRTC may also be required. 1260 In WebRTC, RTT is specified in draft-ietf-mmusic-t140-usage-data- 1261 channel[I-D.ietf-mmusic-t140-usage-data-channel]. 1263 A multi-party bridge may have functionality for communicating by RTT 1264 in both RTP streams with RTT and WebRTC t140 data channels. Other 1265 configurations may consist of a multi-party bridge with either 1266 technology for RTT transport and a separate gateway for conversion of 1267 the text communication streams between RTP and t140 data channel. 1269 In WebRTC, it is assumed that for a multi-party session, one t140 1270 data channel is established for each source from a gateway or bridge 1271 to each participant. Each participant also has a data channel with 1272 two-way connection with the gateway or bridge. 1274 The t140 channel used both ways is for text from the WebRTC user and 1275 from the bridge or gateway itself to the WebRTC user. The label 1276 parameter of this t140 channel is used as NAME field in RTCP to 1277 participants on the RTP side. The other t140 channels are only for 1278 text from other participants to the WebRTC user. 1280 When a new participant has entered the session with RTP transport of 1281 rtt, a new t140 channel SHOULD be established to WebRTC users with 1282 the label parameter composed from the NAME field in RTCP on the RTP 1283 side. 1285 When a new participant has entered the multi-party session with RTT 1286 transport in a WebRTC t140 data channel, the new participant SHOULD 1287 be announced by a notification to RTP users. The label parameter 1288 from the WebRTC side SHOULD be used as the NAME RTCP field on the RTP 1289 side. 1291 15. Updates to RFC 4102 and RFC 4103 1293 The document updates RFC 4102[RFC4102] and RFC 4103[RFC4103] by 1294 introducing an extended packet format 'text/rex' for the multi-party 1295 mixing case and more strict rules for the use of redundancy, and 1296 population of the CSRC list in the packets. Implications for the 1297 CSRC list use from RFC 2198[RFC2198] are hereby not in effect. 1299 16. Congestion considerations 1301 The congestion considerations and recommended actions from RFC 4103 1302 [RFC4103] are valid also in multi-party situations. 1304 17. Acknowledgements 1306 James Hamlin for format input. 1308 18. IANA Considerations 1310 The IANA is requested to register the media type registration "text/ 1311 rex" as specified in Section 9. The media type is also requested to 1312 be added to the IANA registry for "RTP Payload Format Media Types" 1313 . 1315 19. Security Considerations 1317 The RTP-mixer model requires the mixer to be allowed to decrypt, pack 1318 and encrypt secured text from the conference participants. Therefore 1319 the mixer needs to be trusted. This is similar to the situation for 1320 central mixers of audio and video. 1322 The requirement to transfer information about the user in RTCP 1323 reports in SDES, CNAME and NAME fields for creation of labels may 1324 have privacy concerns as already stated in RFC 3550 [RFC3550], and 1325 may be restricted of privacy reasons. The receiving user will then 1326 get a more symbolic label for the source. 1328 20. Change history 1329 20.1. Changes included in draft-ietf-avtcore-multi-party-rtt-mix-02 1331 SDP and better description and visibility of security by OSRTP RFC 1332 8634 needed. 1334 The description of gatewaying to WebRTC extended. 1336 The description of the redundancy header in the packet is improved. 1338 20.2. Changes to draft-ietf-avtcore-multi-party-rtt-mix-01 1340 2,5,6 More efficient format text/rex introduced and attribute a=rtt- 1341 mix deleted. 1343 3. Brief about use of OSRTP for security included- More needed. 1345 4. Brief motivation for the solution and why not rtp-translator is 1346 used added to intro. 1348 7. More limitations for the multi-party unaware mixing method 1349 inserted. 1351 8. Updates to RFC 4102 and 4103 more clearly expressed. 1353 9. Gateway to WebRTC started. More needed. 1355 20.3. Changes from draft-hellstrom-avtcore-multi-party-rtt-source-03 to 1356 draft-ietf-avtcore-multi-party-rtt-mix-00 1358 Changed file name to draft-ietf-avtcore-multi-party-rtt-mix-00 1360 Replaced CDATA in IANA registration table with better coding. 1362 Converted to xml2rfc version 3. 1364 20.4. Changes from draft-hellstrom-avtcore-multi-party-rtt-source-02 to 1365 -03 1367 Changed company and e-mail of the author. 1369 Changed title to "RTP-mixer formatting of multi-party Real-time text" 1370 to better match contents. 1372 Check and modification where needed of use of RFC 2119 words SHALL 1373 etc. 1375 More about the CC value in sections on transmitters and receivers so 1376 that 1-to-1 sessions do not use the mixer format. 1378 Enhanced section on presentation for multi-party-unaware endpoints 1380 A paragraph recommending CPS=150 inserted in the performance section. 1382 20.5. Changes from draft-hellstrom-avtcore-multi-party-rtt-source-01 to 1383 -02 1385 In Abstract and 1. Introduction: Introduced wording about regulatory 1386 requirements. 1388 In section 5: The transmission interval is decreased to 100 ms when 1389 there is text from more than one source to transmit. 1391 In section 11 about sdp negotiation, a SHOULD-requirement is 1392 introduced that the mixer should make a mix for multi-party unaware 1393 endpoints if the negotiation is not successful. And a reference to a 1394 later chapter about it. 1396 The presentation considerations chapter 14 is extended with more 1397 information about presentation on multi-party aware endpoints, and a 1398 new section on the multi-party unaware mixing with low functionality 1399 but SHOULD a be implemented in mixers. Presentation examples are 1400 added. 1402 A short chapter 15 on gateway considerations is introduced. 1404 Clarification about the text/t140 format included in chapter 10. 1406 This sentence added to the chapter 10 about use without redundancy. 1407 "The text/red format SHOULD be used unless some other protection 1408 against packet loss is utilized, for example a reliable network or 1409 transport." 1411 Note about deviation from RFC 2198 added in chapter 4. 1413 In chapter 9. "Use with SIP centralized conferencing framework" the 1414 following note is inserted: Note: The CSRC-list in an RTP packet only 1415 includes participants who's text is included in one or more text 1416 blocks. It is not the same as the list of participants in a 1417 conference. With audio and video media, the CSRC-list would often 1418 contain all participants who are not muted whereas text participants 1419 that don't type are completely silent and so don't show up in RTP 1420 packet CSRC-lists. 1422 20.6. Changes from draft-hellstrom-avtcore-multi-party-rtt-source-00 to 1423 -01 1425 Editorial cleanup. 1427 Changed capability indication from fmtp-parameter to sdp attribute 1428 "rtt-mix". 1430 Swapped order of redundancy elements in the example to match reality. 1432 Increased the SDP negotiation section 1434 21. References 1436 21.1. Normative References 1438 [I-D.ietf-mmusic-t140-usage-data-channel] 1439 Holmberg, C. and G. Hellstrom, "T.140 Real-time Text 1440 Conversation over WebRTC Data Channels", Work in Progress, 1441 Internet-Draft, draft-ietf-mmusic-t140-usage-data-channel- 1442 14, 10 April 2020, . 1445 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1446 Requirement Levels", BCP 14, RFC 2119, 1447 DOI 10.17487/RFC2119, March 1997, 1448 . 1450 [RFC2198] Perkins, C., Kouvelas, I., Hodson, O., Hardman, V., 1451 Handley, M., Bolot, J.C., Vega-Garcia, A., and S. Fosse- 1452 Parisis, "RTP Payload for Redundant Audio Data", RFC 2198, 1453 DOI 10.17487/RFC2198, September 1997, 1454 . 1456 [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. 1457 Jacobson, "RTP: A Transport Protocol for Real-Time 1458 Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, 1459 July 2003, . 1461 [RFC4102] Jones, P., "Registration of the text/red MIME Sub-Type", 1462 RFC 4102, DOI 10.17487/RFC4102, June 2005, 1463 . 1465 [RFC4103] Hellstrom, G. and P. Jones, "RTP Payload for Text 1466 Conversation", RFC 4103, DOI 10.17487/RFC4103, June 2005, 1467 . 1469 [RFC4855] Casner, S., "Media Type Registration of RTP Payload 1470 Formats", RFC 4855, DOI 10.17487/RFC4855, February 2007, 1471 . 1473 [RFC6263] Marjou, X. and A. Sollaud, "Application Mechanism for 1474 Keeping Alive the NAT Mappings Associated with RTP / RTP 1475 Control Protocol (RTCP) Flows", RFC 6263, 1476 DOI 10.17487/RFC6263, June 2011, 1477 . 1479 [RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type 1480 Specifications and Registration Procedures", BCP 13, 1481 RFC 6838, DOI 10.17487/RFC6838, January 2013, 1482 . 1484 [RFC8643] Johnston, A., Aboba, B., Hutton, A., Jesske, R., and T. 1485 Stach, "An Opportunistic Approach for Secure Real-time 1486 Transport Protocol (OSRTP)", RFC 8643, 1487 DOI 10.17487/RFC8643, August 2019, 1488 . 1490 [T140] ITU-T, "Recommendation ITU-T T.140 (02/1998), Protocol for 1491 multimedia application text conversation", February 1998, 1492 . 1494 [T140ad1] ITU-T, "Recommendation ITU-T.140 Addendum 1 - (02/2000), 1495 Protocol for multimedia application text conversation", 1496 February 2000, 1497 . 1499 21.2. Informative References 1501 [RFC4353] Rosenberg, J., "A Framework for Conferencing with the 1502 Session Initiation Protocol (SIP)", RFC 4353, 1503 DOI 10.17487/RFC4353, February 2006, 1504 . 1506 [RFC4575] Rosenberg, J., Schulzrinne, H., and O. Levin, Ed., "A 1507 Session Initiation Protocol (SIP) Event Package for 1508 Conference State", RFC 4575, DOI 10.17487/RFC4575, August 1509 2006, . 1511 [RFC4579] Johnston, A. and O. Levin, "Session Initiation Protocol 1512 (SIP) Call Control - Conferencing for User Agents", 1513 BCP 119, RFC 4579, DOI 10.17487/RFC4579, August 2006, 1514 . 1516 Author's Address 1518 Gunnar Hellstrom 1519 Gunnar Hellstrom Accessible Communication 1520 Esplanaden 30 1521 SE-13670 Vendelso 1522 Sweden 1524 Email: gunnar.hellstrom@ghaccess.se