idnits 2.17.1 draft-ietf-avtcore-multi-party-rtt-mix-05.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 764 has weird spacing: '...example from ...' == Line 779 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 'MUST not' in this paragraph: A party not performing as a mixer MUST not include the CSRC list if it has a single source of text. == 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 (4 June 2020) is 1420 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 1351, but not defined ** Obsolete normative reference: RFC 4566 (Obsoleted by RFC 8866) ** 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: 3 errors (**), 0 flaws (~~), 12 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) 4 June 2020 5 Intended status: Standards Track 6 Expires: 6 December 2020 8 RTP-mixer formatting of multi-party Real-time text 9 draft-ietf-avtcore-multi-party-rtt-mix-05 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 this 25 document, suitable for a centralized conference model that enables 26 source identification and efficient source switching. The intended 27 use is for real-time text mixers and multi-party-aware participant 28 endpoints. The mechanism builds on use of the CSRC list in the RTP 29 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 6 December 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 . . . . . . . . . . . . . . . . . . . . . . . . 4 74 1.1. Selected solution and considered alternative . . . . . . 5 75 1.2. Nomenclature . . . . . . . . . . . . . . . . . . . . . . 5 76 1.3. Intended application . . . . . . . . . . . . . . . . . . 5 77 2. Use of fields in the RTP packets . . . . . . . . . . . . . . 6 78 3. Actions at transmission by a mixer . . . . . . . . . . . . . 9 79 3.1. Initial BOM transmission . . . . . . . . . . . . . . . . 9 80 3.2. Keep-alive . . . . . . . . . . . . . . . . . . . . . . . 9 81 3.3. Transmission interval . . . . . . . . . . . . . . . . . . 9 82 3.4. Do not send received text to the originating source . . . 9 83 3.5. Clean incoming text . . . . . . . . . . . . . . . . . . . 10 84 3.6. Redundancy . . . . . . . . . . . . . . . . . . . . . . . 10 85 3.7. Text placement in packets . . . . . . . . . . . . . . . . 10 86 3.8. Maximum number of sources per packet . . . . . . . . . . 10 87 3.9. Empty T140blocks . . . . . . . . . . . . . . . . . . . . 11 88 3.10. Creation of the redundancy . . . . . . . . . . . . . . . 11 89 3.11. Timer offset fields . . . . . . . . . . . . . . . . . . . 11 90 3.12. Other RTP header fields . . . . . . . . . . . . . . . . . 11 91 3.13. Pause in transmission . . . . . . . . . . . . . . . . . . 12 92 4. Actions at reception . . . . . . . . . . . . . . . . . . . . 12 93 4.1. Multi-party vs two-party use . . . . . . . . . . . . . . 12 94 4.2. Level of redundancy . . . . . . . . . . . . . . . . . . . 12 95 4.3. Extracting text and handling recovery and loss . . . . . 12 96 4.4. Delete BOM . . . . . . . . . . . . . . . . . . . . . . . 13 97 4.5. Empty T140blocks . . . . . . . . . . . . . . . . . . . . 13 99 5. RTCP considerations . . . . . . . . . . . . . . . . . . . . . 13 100 6. Chained operation . . . . . . . . . . . . . . . . . . . . . . 14 101 7. Usage without redundancy . . . . . . . . . . . . . . . . . . 14 102 8. Use with SIP centralized conferencing framework . . . . . . . 14 103 9. Conference control . . . . . . . . . . . . . . . . . . . . . 14 104 10. Media Subtype Registration . . . . . . . . . . . . . . . . . 14 105 11. SDP considerations . . . . . . . . . . . . . . . . . . . . . 16 106 11.1. Security for session control and media . . . . . . . . . 16 107 11.2. SDP offer/answer examples . . . . . . . . . . . . . . . 16 108 12. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 18 109 13. Performance considerations . . . . . . . . . . . . . . . . . 21 110 14. Presentation level considerations . . . . . . . . . . . . . . 22 111 14.1. Presentation by multi-party aware endpoints . . . . . . 23 112 14.2. Multi-party mixing for multi-party unaware endpoints . . 25 113 15. Gateway Considerations . . . . . . . . . . . . . . . . . . . 30 114 15.1. Gateway considerations with Textphones (e.g. TTYs). . . 31 115 15.2. Gateway considerations with WebRTC. . . . . . . . . . . 31 116 16. Updates to RFC 4102 and RFC 4103 . . . . . . . . . . . . . . 32 117 17. Congestion considerations . . . . . . . . . . . . . . . . . . 32 118 18. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 32 119 19. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 32 120 20. Security Considerations . . . . . . . . . . . . . . . . . . . 32 121 21. Change history . . . . . . . . . . . . . . . . . . . . . . . 33 122 21.1. Changes included in 123 draft-ietf-avtcore-multi-party-rtt-mix-05 . . . . . . . 33 124 21.2. Changes included in 125 draft-ietf-avtcore-multi-party-rtt-mix-04 . . . . . . . 33 126 21.3. Changes included in 127 draft-ietf-avtcore-multi-party-rtt-mix-03 . . . . . . . 33 128 21.4. Changes included in 129 draft-ietf-avtcore-multi-party-rtt-mix-02 . . . . . . . 34 130 21.5. Changes to draft-ietf-avtcore-multi-party-rtt-mix-01 . . 34 131 21.6. Changes from 132 draft-hellstrom-avtcore-multi-party-rtt-source-03 to 133 draft-ietf-avtcore-multi-party-rtt-mix-00 . . . . . . . 34 134 21.7. Changes from 135 draft-hellstrom-avtcore-multi-party-rtt-source-02 to 136 -03 . . . . . . . . . . . . . . . . . . . . . . . . . . 35 137 21.8. Changes from 138 draft-hellstrom-avtcore-multi-party-rtt-source-01 to 139 -02 . . . . . . . . . . . . . . . . . . . . . . . . . . 35 140 21.9. Changes from 141 draft-hellstrom-avtcore-multi-party-rtt-source-00 to 142 -01 . . . . . . . . . . . . . . . . . . . . . . . . . . 36 143 22. References . . . . . . . . . . . . . . . . . . . . . . . . . 36 144 22.1. Normative References . . . . . . . . . . . . . . . . . . 36 145 22.2. Informative References . . . . . . . . . . . . . . . . . 38 146 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 38 148 1. Introduction 150 RFC 4103[RFC4103] specifies use of RFC 3550 RTP [RFC3550] for 151 transmission of real-time text (RTT) and the "text/t140" format. It 152 also specifies a redundancy format "text/red" for increased 153 robustness. RFC 4102 [RFC4102] registers the "text/red" format. 154 Regional regulatory requirements specify provision of real-time text 155 in multi-party calls. 157 Real-time text is usually provided together with audio and sometimes 158 with video in conversational sessions. 160 The redundancy scheme of RFC 4103 [RFC4103] enables efficient 161 transmission of redundant text in packets together with new text. 162 However the redundant header format has no source indicators for the 163 redundant transmissions. An assumption has had to be made that the 164 redundant parts in a packet are from the same source as the new text. 165 The recommended transmission is one new and two redundant generations 166 of text (T140blocks) in each packet and the recommended transmission 167 interval is 300 ms. 169 A mixer, selecting between text input from different sources and 170 transmitting it in a common stream needs to make sure that the 171 receiver can assign the received text to the proper sources for 172 presentation. Therefore, using RFC 4103 without any extra rule for 173 source identification, the mixer needs to stop sending new text from 174 one source and then make sure that all text so far has been sent with 175 all intended redundancy levels (usually two) before switching to 176 another source. That causes the very long time of one second to 177 switch between transmission of text from one source to text from 178 another source. Both the total throughput and the switching 179 performance in the mixer is too low for most applications. 181 A more efficient source identification scheme requires that each 182 redundant T140block has its source individually preserved. This 183 document introduces a source indicator by specific rules for 184 populating the CSRC-list and the data header in the RTP-packet. 186 An extended packet format "text/rex" is specified for this purpose, 187 providing the possibility to include text from up to 16 sources in 188 each packet in order to enhance mixer source switching performance. 189 By these extensions, the performance requirements on multi-party 190 mixing for real-time text are exceeded by the solution in this 191 document. 193 A negotiation mechanism can therefore be based on selection between 194 the "text/red" and the "text/rex" media formats for verification that 195 the receiver is able to handle the multi-party coded stream. 197 A fall-back mixing procedure is specified for cases when the 198 negotiation results in "text/red" being the only common submedia 199 format. 201 The document updates RFC 4102[RFC4102] and RFC 4103[RFC4103] by 202 introducing an extended packet format for the multi-party mixing case 203 and more strict rules for the source indications. 205 1.1. Selected solution and considered alternative 207 The mechanism specified in this document makes use of the RTP mixer 208 model specified in RFC3550[RFC3550]. From some points of view, use 209 of the RTP translator model specified in RFC 3550 would be more 210 efficient, because then the text packets can pass the translator with 211 only minor modification. However, there may be a lack of support for 212 the translator model in existing RTP implementations, and therefore 213 the more common RTP-mixer model was selected. The translator model 214 would also easier cause congestion if many users send text 215 simultaneously. 217 1.2. Nomenclature 219 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 220 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 221 document are to be interpreted as described in [RFC2119]. 223 The terms SDES, CNAME, NAME, SSRC, CSRC, CSRC list, CC, RTCP, RTP- 224 mixer, RTP-translator are explained in [RFC3550] 226 The term "T140block" is defined in RFC 4103 [RFC4103] to contain one 227 or more T.140 code elements. 229 "TTY" stands for a text telephone type used in North America. 231 "WebRTC" stands for web based communication specified by W3C and 232 IETF. 234 "DTLS-SRTP" stnds for security specified in RFC 5764 [RFC5764]. 236 1.3. Intended application 238 The format for multi-party real-time text is primarily intended for 239 use in transmission between mixers and endpoints in centralised 240 mixing configurations. It is also applicable between endpoints as 241 well as between mixers. 243 2. Use of fields in the RTP packets 245 RFC 4103[RFC4103] specifies use of RFC 3550 RTP[RFC3550], and a 246 redundancy format "text/red" for increased robustness of real-time 247 text transmission. This document updates RFC 4102[RFC4102] and RFC 248 4103[RFC4103] by introducing a format "text/rex" with a rule for 249 populating and using the CSRC-list in the RTP packet and extending 250 the redundancy header to be called a data header. This is done in 251 order to enhance the performance in multi-party RTT sessions. 253 The "text/rex" format can be seen as an "n-tuple" of the "text/red" 254 format intended to carry text information from up to 16 sources per 255 packet. 257 The CC field SHALL show the number of members in the CSRC list, which 258 is one per source represented in the packet. 260 When transmitted from a mixer, a CSRC list is included in the packet. 261 The members in the CSRC-list SHALL contain the SSRCs of the sources 262 of the T140blocks in the packet. The order of the CSRC members MUST 263 be the same as the order of the sources of the data header fields and 264 the T140blocks. When redundancy is used, text from all included 265 sources MUST have the same number of redundant generations. The 266 primary, first redundant, second redundant and possible further 267 redundant generations of T140blocks MUST be grouped per source in the 268 packet in "source groups". The recommended level of redundancy is to 269 use one primary and two redundant generations of T140blocks. In some 270 cases, a primary or redundant T140block is empty, but is still 271 represented by a member in the data header. 273 The RTP header is followed by one or more source groups of data 274 headers: one header for each text block to be included. Each of 275 these data headers provides the timestamp offset and length of the 276 corresponding data block, in addition to the payload type number 277 corresponding to the payload format "text/t140". The data headers 278 are followed by the data fields carrying T140blocks from the sources. 280 0 1 2 3 281 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 282 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 283 |F| block PT | timestamp offset | block length | 284 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 286 Figure 1: The bits in the data header. 288 The bits in the data header are specified as follows: 290 F: 1 bit First bit in header indicates whether another header block 291 follows. It has value 1 if further header blocks follow, and 292 value 0 if this is the last header block. 294 block PT: 7 bits RTP payload type number for this block, 295 corresponding to the t140 payload type from the RTPMAP SDP 296 attribute. 298 timestamp offset: 14 bits Unsigned offset of timestamp of this block 299 relative to the timestamp given in the RTP header. The offset is 300 a time to be subtracted from the current timestamp to determine 301 the timestamp of the data when the latest part of this block was 302 sent from the original source. If the timestamp offset would be 303 >15 000, it SHALL be set to 15 000. For redundant data, the 304 resulting time is the time when the data was sent as primary from 305 the original source. If the value would be >15 000, then it SHALL 306 be set to 15 000 plus 300 times the redundancy level of the data. 307 The high values appear only in exceptional cases, e.g. when some 308 data has been held in order to keep the text flow under the 309 Characters Per Second (CPS) limit. 311 block length: 10 bits Length in bytes of the corresponding data 312 block excluding the header. 314 The header for the final block has a zero F bit, and apart from that 315 the same fields as other data headers. 317 Note: This document has a packet format that is similar to that of 318 RFC 2198 [RFC2198] but is different from some aspects. RFC 2198 319 associates the whole of the CSRC-list with the primary data and 320 assumes that the same list applies to reconstructed redundant data. 321 In this document a T140block is associated with exactly one CSRC list 322 member as described above. Also RFC 2198 [RFC2198] anticipates 323 infrequent change to CSRCs; implementers should be aware that the 324 order of the CSRC-list according to this document will vary during 325 transitions between transmission from the mixer of text originated by 326 different participants. Another difference is that the last member 327 in the data header area in RFC 2198 [RFC2198] only contains the 328 payload type number while in this document it has the same format as 329 all other entries in the data header. 331 The picture below shows a typical "text/rex" RTP packet with multi- 332 party RTT contents from three sources and coding according to this 333 document. 335 0 1 2 3 336 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 337 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 338 |V=2|P|X| CC=3 |M| "REX" PT | RTP sequence number | 339 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 340 | timestamp of packet creation | 341 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 342 | synchronization source (SSRC) identifier | 343 +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ 344 | CSRC list member 1 = SSRC of source of "A" | 345 | CSRC list member 2 = SSRC of source of "B" | 346 | CSRC list member 3 = SSRC of source of "C" | 347 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 348 |1| T140 PT |timestmp offset of "A-R2" |"A-R2" block length| 349 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 350 |1| T140 PT |timestamp offset of "A-R1" |"A-R1" block length| 351 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 352 |1| T140 PT | timestamp offset of "A-P" |"A-P" block length | 353 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 354 |1| T140 PT |timestamp offset of "B-R2" |"B-R2" block length| 355 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 356 |1| T140 PT |timestamp offset of "B-R1" |"B-R1" block length| 357 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 358 |1| T140 PT | timestamp offset of "B-P" | "B-P" block length| 359 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 360 |1| T140 PT |timestamp offset of "C-R2" |"C-R2" block length| 361 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 362 |1| T140 PT |timestamp offset of "C-R1" |"C-R1" block length| 363 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 364 |0| T140 PT |timestamp offset of "C-P" |"C-P" block length | 365 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 366 | "A-R2" T.140 encoded redundant data | 367 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 368 | |"A-R1" T.140 encoded redundant data | 369 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 370 |"A-P" T.140 encoded primary | | 371 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 372 | "B-R2" T.140 encoded redundant data | | 373 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 374 | "B-R1" T.140 encoded redundant data | 375 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 376 | "B-P" T.140 encoded primary data | | 377 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 378 | "C-R2" T.140 encoded redundant data | | 379 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 380 | "C-R1" T.140 encoded redundant data | 381 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 382 | "C-P" T.140 encoded primary data | 383 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 384 Figure 2:A "text/rex" packet with text from three sources A, B, C. 386 A-P, B-P, C-P are primary data from A, B and C. 388 A-R1, B-R1, C-R1 are first redundant generation data from A, B and C. 390 A-R2, B-R2, C-R2 are first redundant generation data from A, B and C. 392 In a real case, some of the data headers will likely indicate a zero 393 block length, and no corresponding T.140 data. 395 3. Actions at transmission by a mixer 397 3.1. Initial BOM transmission 399 As soon as a participant is known to participate in a session and 400 being available for text reception, a Unicode BOM character SHALL be 401 sent to it according to the procedures in this document. If the 402 transmitter is a mixer, then the source of this character SHALL be 403 indicated to be the mixer itself. 405 3.2. Keep-alive 407 After that, the transmitter SHALL send keep-alive traffic to the 408 receivers at regular intervals when no other traffic has occurred 409 during that interval if that is decided for the actual connection. 410 Recommendations for keep-alive can be found in RFC 6263[RFC6263]. 412 3.3. Transmission interval 414 A "text/rex" transmitter SHOULD send packets distributed in time as 415 long as there is something (new or redundant T140blocks) to transmit. 416 The maximum transmission interval SHOULD then be 300 ms. It is 417 RECOMMENDED to send a packet to a receiver as soon as new text to 418 that receiver is available, as long as the time after the latest sent 419 packet to the same receiver is more than 150 ms, and also the maximum 420 character rate to the receiver is not exceeded. The intention is to 421 keep the latency low while keeping a good protection against text 422 loss in bursty packet loss conditions. 424 3.4. Do not send received text to the originating source 426 Text received from a participant SHOULD NOT be included in 427 transmission to that participant. 429 3.5. Clean incoming text 431 A mixer SHALL handle reception and recovery of packet loss, marking 432 of possible text loss and deletion of 'BOM' characters from each 433 participant before queueing received text for transmission to 434 receiving participants. 436 3.6. Redundancy 438 The transmitting party using redundancy SHALL send redundant 439 repetitions of T140blocks aleady transmitted in earlier packets. The 440 number of redundant generations of T140blocks to include in 441 transmitted packets SHALL be deducted from the SDP negotiation. It 442 SHOULD be set to the minimum of the number declared by the two 443 parties negotiating a connection. The same number of redundant 444 generations MUST be used for text from all sources when it is 445 transmitted to a receiver. The number of generations sent to a 446 receiver SHALL be the same during the whole session unless it is 447 modified by session renegotiation. 449 3.7. Text placement in packets 451 At time of transmission, the mixer SHALL populate the RTP packet with 452 T140blocks combined from all T140blocks queued for transmission 453 originating from each source as long as this is not in conflict with 454 the allowed number of characters per second or the maximum packet 455 size. These T140blocks SHALL be placed in the packet interleaved 456 with redundant T140blocks and new T140blocks from other sources. The 457 SSRC of each source shall be placed as a member in the CSRC-list at a 458 place corresponding to the place of its T140blocks in the packet. 460 3.8. Maximum number of sources per packet 462 Text from a maximum of 16 sources MAY be included in a packet. The 463 reason for this limitation is the maximum number of CSRC list members 464 allowed in a packet. If text from more sources need to be 465 transmitted, the mixer MAY let the sources take turns in having their 466 text transmitted. When stopping transmission of one source to allow 467 another source to have its text sent, all intended redundant 468 generations of the last text from the source to be stopped MUST be 469 transmitted before text from another source can be transmitted. 470 Actively transmitting sources SHOULD be allowed to take turns with 471 short intervals to have their text transmitted. 473 Note: The CSRC-list in an RTP packet only includes participants who's 474 text is included in text blocks. It is not the same as the total 475 list of participants in a conference. With audio and video media, 476 the CSRC-list would often contain all participants who are not muted 477 whereas text participants that don't type are completely silent and 478 thus are not represented in RTP packet CSRC-lists once their text 479 have been transmitted as primary and the intended number of redundant 480 generations. 482 3.9. Empty T140blocks 484 If no unsent T140blocks were available for a source at the time of 485 populating a packet, but T140blocks are available which have not yet 486 been sent the full intended number of redundant transmissions, then 487 the primary T140block for that source is composed of an empty 488 T140block, and populated (without taking up any length) in a packet 489 for transmission. The corresponding SSRC SHALL be placed in its 490 place in the CSRC-list. 492 3.10. Creation of the redundancy 494 The primary T140block from each source in the latest transmitted 495 packet is used to populate the first redundant T140block for that 496 source. The first redundant T140block for that source from the 497 latest transmission is placed as the second redundant T140block 498 source. 500 Usually this is the level of redundancy used. If a higher number of 501 redundancy is negotiated, then the procedure SHALL be maintained 502 until all available redundant levels of T140blocks and their sources 503 are placed in the packet. If a receiver has negotiated a lower 504 number of "text/rex" generations, then that level shall be the 505 maximum used by the transmitter. 507 3.11. Timer offset fields 509 The timer offset values are inserted in the data header, with the 510 time offset from the RTP timestamp in the packet when the 511 corresponding T140block was sent from its original source as primary. 513 The timer offsets are expressed in the same clock tick units as the 514 RTP timestamp. 516 The timestamp offset values for empty T140blocks have no relevance 517 but SHOULD be assigned realistic values. 519 3.12. Other RTP header fields 521 The number of members in the CSRC list shall be placed in the "CC" 522 header field. Only mixers place values >0 in the "CC" field. 524 The current time SHALL be inserted in the timestamp. 526 The SSRC of the mixer for the RTT session SHALL be inserted in the 527 SSRC field of the RTP header. 529 3.13. Pause in transmission 531 When there is no new T140block to transmit, and no redundant 532 T140block that has not been retransmitted the intended number of 533 times, the transmission process can stop until either new T140blocks 534 arrive, or a keep-alive method calls for transmission of keep-alive 535 packets. 537 4. Actions at reception 539 The "text/rex" receiver included in an endpoint with presentation 540 functions will receive RTP packets in the single stream from the 541 mixer, and SHALL distribute the T140blocks for presentation in 542 presentation areas for each source. Other receiver roles, such as 543 gateways or chained mixers are also feasible, and requires 544 consideration if the stream shall just be forwarded, or distributed 545 based on the different sources. 547 4.1. Multi-party vs two-party use 549 If the "CC" field value of a received packet is >0, it indicates that 550 multi-party transmission is active, and the receiver MUST be prepared 551 to act on the different sources according to its role. If the CC 552 value is 0, the connection is point-to-point. 554 4.2. Level of redundancy 556 The used level of redundancy generations SHALL be evaluated from the 557 received packet contents. If the CC value is 0, the number of 558 generations (including the primary) is equal to the number of members 559 in the data header. If the CC value is >0, the number of generations 560 (including the primary) is equal to the number of members in the data 561 header divided by the CC value. If the remainder from the division 562 is >0, then the packet is malformed and SHALL cause an error 563 indication in the receiver. 565 4.3. Extracting text and handling recovery and loss 567 The RTP sequence numbers of the received packets SHALL be monitored 568 for gaps and packets out of order. 570 As long as the sequence is correct, each packet SHALL be unpacked in 571 order. The T140blocks SHALL be extracted from the primary areas, and 572 the corresponding SSRCs SHALL be extracted from the corresponding 573 positions in the CSRC list and used for assigning the new T140block 574 to the correct presentation areas (or correspondingly). 576 If a sequence number gap appears and is still there after some 577 defined time for jitter resolution, T140data SHALL be recovered from 578 redundant data. If the gap is wider than the number of generations 579 of redundant T140blocks in the packet, then a t140block SHALL be 580 created with a marker for text loss [T140ad1] and assigned to the 581 SSRC of the transmitter as a general input from the mixer because in 582 general it is not possible to deduct from which sources text was 583 lost. 585 Then, the T140blocks in the received packet SHALL be retrieved 586 beginning with the highest redundant generation, grouping them with 587 the corresponding SSRC from the CSRC-list and assigning them to the 588 presentation areas per source. Finally the primary T140blocks SHALL 589 be retrieved from the packet and similarly their sources retrieved 590 from the corresponding positions in the CSRC-list, and then assigned 591 to the corresponding presentation areas for the sources. 593 If the sequence number gap was equal to or less than the number of 594 redundancy generations in the received packet, a missing text marker 595 SHALL NOT be inserted, and instead the T140blocks and their SSRCs 596 fully recovered from the redundancy information and the CSRC-list in 597 the way indicated above. 599 4.4. Delete BOM 601 Unicode character BOM is used as a start indication and sometimes 602 used as a filler or keep alive by transmission implementations. 603 These SHALL be deleted on reception. 605 4.5. Empty T140blocks 607 Empty T140blocks are included as fillers for unused redundancy levels 608 in the packets. They just do not provide any contents and do not 609 contribute to the received streams. 611 5. RTCP considerations 613 A mixer SHALL send RTCP reports with SDES, CNAME and NAME information 614 about the sources in the multi-party call. This makes it possible 615 for participants to compose a suitable label for text from each 616 source. 618 6. Chained operation 620 By strictly applying the rules for "text/rex" packet format by all 621 conforming devices, mixers MAY be arranged in chains. 623 7. Usage without redundancy 625 The "text/rex" format SHALL be used also for multi-party 626 communication when the redundancy mechanism is not used. That MAY be 627 the case when robustness in transmission is provided by some other 628 means than by redundancy. All aspects of this document SHALL be 629 applied except the redundant generations in transmission. 631 The "text/rex" format SHOULD thus be used for multi-party operation, 632 also when some other protection against packet loss is utilized, for 633 example a reliable network or transport. The format is also suitable 634 to be used for point-to-point operation. 636 8. Use with SIP centralized conferencing framework 638 The SIP conferencing framework, mainly specified in RFC 639 4353[RFC4353], RFC 4579[RFC4579] and RFC 4575[RFC4575] is suitable 640 for coordinating sessions including multi-party RTT. The RTT stream 641 between the mixer and a participant is one and the same during the 642 conference. Participants get announced by notifications when 643 participants are joining or leaving, and further user information may 644 be provided. The SSRC of the text to expect from joined users MAY be 645 included in a notification. The notifications MAY be used both for 646 security purposes and for translation to a label for presentation to 647 other users. 649 9. Conference control 651 In managed conferences, control of the real-time text media SHOULD be 652 provided in the same way as other for media, e.g. for muting and 653 unmuting by the direction attributes in SDP [RFC4566]. 655 Note that floor control functions may be of value for RTT users as 656 well as for users of other media in a conference. 658 10. Media Subtype Registration 660 This registration is done using the template defined in [RFC6838] and 661 following [RFC4855]. 663 Type name: text 665 Subtype name: rex 666 Required parameters: rate: The RTP timestamp (clock) rate. The 667 only valid value is 1000. 669 pt: A slash-separated list with the payload 670 type number(pt) for the primary text, the first redundant text, 671 the second redundant text etc, that the receiver is capable to 672 receive. 674 Optional parameter: cps: This parameter is used to signal the 675 capabilities of a receiver implementation. It indicates the 676 maximum number of characters that may be received per second 677 measured over a period of 10 seconds. The default value is 150. 679 Encoding considerations: binary; see Section 4.8 of [RFC6838]. 681 Security considerations: See Section 20 of RFC xxxx. [RFC Editor: 682 Upon publication as an RFC, please replace "XXXX" with the number 683 assigned to this document and remove this note.] 685 Interoperability considerations: None. 687 Published specification: RFC XXXX. [RFC Editor: Upon publication as 688 an RFC, please replace "XXXX" with the number assigned to this 689 document and remove this note.] 691 Applications which use this media type: For example: Text 692 conferencing tools, multimedia conferencing tools.Real-time 693 conversational tools. 695 Fragment identifier considerations: N/A. 697 Additional information: None. 699 Person & email address to contact for further information: Gunnar 700 Hellstrom 702 Intended usage: COMMON 704 Restrictions on usage: This media type depends on RTP framing, and 705 hence is only defined for transfer via RTP [RFC3550]. 707 Author: Gunnar Hellstrom 709 Change controller: IETF AVTCore Working Group delegated from the 710 IESG. 712 11. SDP considerations 714 There are receiving RTT implementations which implement RFC 4103 715 [RFC4103] but not the source separation by the CSRC. Sending mixed 716 text according to the usual CSRC convention from RFC 2198 [RFC2198] 717 to a device implementing only RFC 4103 [RFC4103] would risk to lead 718 to unreadable presented text. Therefore, in order to negotiate RTT 719 mixing capability according to this document, all devices supporting 720 this document for multi-party aware participants SHALL include an SDP 721 media format "text/rex" in the SDP [RFC4566], indicating this 722 capability in offers and answers. Multi-party streams using the 723 coding of this document intended for multi-party aware endpoints MUST 724 NOT be sent to devices which have not indicated the "text/rex" 725 format. 727 Implementations not understanding this format MUST ignore it 728 according to common SDP rules. 730 The SDP media format defined here, is named "rex", for extended 731 "red". It is intended to be used in "text" media descriptions with 732 "text/rex" and "text/t140" formats. Both formats MUST be declared 733 for the "text/rex" format to be used. It indicates capability to use 734 source indications in the CSRC list and the packet format according 735 to this document. It also indicates ability to receive 150 real-time 736 text characters per second by default. 738 11.1. Security for session control and media 740 Security SHOULD be applied on both session control and media. In 741 applications where legacy endpoints without security may exist, a 742 negotiation between security and no security SHOULD be applied. If 743 no other security solution is mandated by the application, then RFC 744 8643 OSRTP[RFC8643] SHOULD be applied to negotiate SRTP media 745 security with DTLS. Most SDP examples below are for simplicity 746 expressed without the security additions. The principles (but not 747 all details) for applying DTLS-SRTP security is shown in a couple of 748 the following examples. 750 11.2. SDP offer/answer examples 752 This sections shows some examples of SDP for session negotiation of 753 the real-time text media in SIP sessions. Audio is usually provided 754 in the same session, and sometimes also video. The examples only 755 show the part of importance for the real-time text media. 757 Offer example for just multi-party capability: 759 m=text 11000 RTP/AVP 101 98 760 a=rtpmap:98 t140/1000 761 a=rtpmap:101 rex/1000 762 a=fmtp:101 98/98/98 764 Answer example from a multi-party capable device 765 m=text 12000 RTP/AVP 101 98 766 a=rtpmap:98 t140/1000 767 a=rtpmap:101 rex/1000 768 a=fmtp:101 98/98/98 770 Offer example for both traditional "text/red" and multi-party format: 772 m=text 11000 RTP/AVP 101 100 98 773 a=rtpmap:98 t140/1000 774 a=rtpmap:100 red/1000 775 a=rtpmap:101 rex/1000 776 a=fmtp:100 98/98/98 777 a=fmtp:101 98/98/98 779 Answer example from a multi-party capable device 780 m=text 11000 RTP/AVP 101 98 781 a=rtpmap:98 t140/1000 782 a=rtpmap:101 rex/1000 783 a=fmtp:101 98/98/98 785 Offer example for both traditional "text/red" and multi-party format 786 including security: 787 a=fingerprint: SHA-1 \ 788 4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB 789 m=text 11000 RTP/AVP 101 100 98 790 a=rtpmap:98 t140/1000 791 a=rtpmap:100 red/1000 792 a=rtpmap:101 rex/1000 793 a=fmtp:100 98/98/98 794 a=fmtp:101 98/98/98 796 The "Fingerprint" is sufficient to offer DTLS-SRTP, with the media 797 line still indicating RTP/AVP. 799 Answer example from a multi-party capable device including security 800 a=fingerprint: SHA-1 \ 801 FF:FF:FF:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB 802 m=text 11000 RTP/AVP 101 98 803 a=rtpmap:98 t140/1000 804 a=rtpmap:101 rex/1000 805 a=fmtp:101 98/98/98 807 With the "fingerprint" the device acknowledges use of SRTP/DTLS. 809 Answer example from a multi-party unaware device that also 810 does not support security: 812 m=text 12000 RTP/AVP 100 98 813 a=rtpmap:98 t140/1000 814 a=rtpmap:100 red/1000 815 a=fmtp:100 98/98/98 817 A party which has negotiated the "text/rex" format MUST populate the 818 CSRC-list and format the packets according to this document if it 819 acts as an rtp-mixer and sends multi-party text. 821 A party which has negotiated the "text/rex" capability MUST interpret 822 the contents of the CSRC-list and the packets according to this 823 document in received rtp packets using the corresponding payload 824 type. 826 A party performing as a mixer, which has not negotiated the "text/ 827 rex" format, but negotiated a "text/red" or "text/t140" format in a 828 session with a participant SHOULD, if nothing else is specified for 829 the application, format transmitted text to that participant to be 830 suitable to present on a multi-party unaware endpoint as further 831 specified in section Section 14.2. 833 A party not performing as a mixer MUST not include the CSRC list if 834 it has a single source of text. 836 12. Examples 838 This example shows a symbolic flow of packets from a mixer with loss 839 and recovery. A, B and C are sources of RTT. M is the mixer. Pn 840 indicates primary data in source group "n". Rn1 is first redundant 841 generation data and Rn2 is second redundant generation data in source 842 group "n". A1, B1, A2 etc are text chunks (T140blocks) received from 843 the respective sources. X indicates dropped packet between the mixer 844 and a receiver. 846 |----------------| 847 |Seq no 1 | 848 |CC=1 | 849 |CSRC list A | 850 |R12: Empty | 851 |R11: Empty | 852 |P1: A1 | 853 |----------------| 855 Assuming that earlier packets were received in sequence, text A1 is 856 received from packet 1 and assigned to reception area A. 858 |----------------| 859 |Seq no 2 | 860 |CC=3 | 861 |CSRC list C,A | 862 |R12 Empty | 863 |R11:Empty | 864 |P1: C1 | 865 |R22 Empty | 866 |R21: A1 | 867 |P2: Empty | 868 |----------------| 869 Text C1 is received from packet 2 and assigned to reception area C. 871 X----------------| 872 X Seq no 3 | 873 X CC=2 | 874 X CSRC list C,A | 875 X R12: Empty | 876 X R11: C1 | 877 X P1: Empty | 878 X R22: A1 | 879 X R21: Empty | 880 X P2: A2 | 881 X----------------| 882 Packet 3 is assumed to be dropped in network problems 883 X----------------| 884 X Seq no 4 | 885 X CC=3 | 886 X CSRC list C,B,A| 887 X R12: Empty | 888 X R11: Empty | 889 X P1: C2 | 890 X R22: Empty | 891 X R21: Empty | 892 X P2: B1 | 893 X R32: Empty | 894 X R31: A2 | 895 X P3: A3 | 896 X----------------| 897 Packet 4 is assumed to be dropped in network problems 899 X----------------| 900 X Seq no 5 | 901 X CC=3 | 902 X CSRC list C,B,A| 903 X R12: Empty | 904 X R11: C2 | 905 X P1: Empty | 906 X R22: Empty | 907 X R21: B1 | 908 X P2: B2 | 909 X R32: A2 | 910 X R31: A3 | 911 X P3: A4 | 912 X----------------| 913 Packet 5 is assumed to be dropped in network problems 915 |----------------| 916 |Seq no 6 | 917 |CC=3 | 918 |CSRC list C,B,A | 919 | R12: C2 | 920 | R11: Empty | 921 | P1: Empty | 922 | R22: B1 | 923 | R21: B2 | 924 | P2: B3 | 925 | R32: A3 | 926 | R31: A4 | 927 | P3: A5 | 928 |----------------| 929 Packet 6 is received. The latest received sequence number was 2. 930 Recovery is therefore tried for 3,4,5. But there is no coverage for 931 seq no 3. A missing text mark (U'FFFD) [T140ad1] is created and 932 appended to the common mixer reception area. For seqno 4, texts C2, 933 B1 and A3 are recovered from the second generation redundancy and 934 appended to their respective reception areas. For seqno 5, texts B2 935 and A4 are recovered from the first generation redundancy and 936 appended to their respective reception areas. Primary text B3 and A5 937 are received and appended to their respective reception areas. 939 After this sequence, the following has been received: A1,A3, A4, A5; 940 B1, B2, B3; C1, C2. A possible loss is indicated by the missing text 941 mark in time between A1 and A3. 943 With only one or two packets lost, there would not be any need to 944 create a missing text marker, and all text would be recovered. 946 It will be a design decision how to present the missing text markers 947 assigned to the mixer as a source. 949 13. Performance considerations 951 This document allows new text from up to 16 sources per packet. A 952 mixer implementing the specification will normally cause a latency of 953 0 to 150 milliseconds in text from up to 16 simultaneous sources. 954 This performance meets well the realistic requirements for conference 955 and conversational applications for which up to 5 simultaneous 956 sources should not be delayed more than 500 milliseconds by a mixer. 957 In order to achieve good performance, a receiver for multi-party 958 calls SHOULD declare a sufficient CPS value in SDP for the number of 959 allowable characters per second. 961 As comparison, if the "text/red" format would be used for multi-party 962 communication with its default timing and redundancy, 5 963 simultaneously sending parties would cause jerky presentation of the 964 text from them in text spurts with 5 seconds intervals. With a 965 reduction of the transmission interval to 150 ms, the time between 966 text spurts for 5 simultaneous sending parties would be 2.5 seconds. 968 Five simultaneous sending parties may occasionally occur in a 969 conference with one or two main sending parties and three parties 970 giving very brief comments. 972 The default maximum rate of reception of real-time text is in RFC 973 4103 [RFC4103] specified to be 30 characters per second. The value 974 MAY be modified in the CPS parameter of the FMTP attribute in the 975 media section for RFC 4103. A mixer combining real-time text from a 976 number of sources may have a higher combined flow of text coming from 977 the sources. Endpoints SHOULD therefore specify a suitable higher 978 value for the CPS parameter, corresponding to its real reception 979 capability. A value for CPS of 150 is the default for the "text/rex" 980 format. See RFC 4103 [RFC4103] for the format and use of the CPS 981 parameter. The same rules apply for the "text/rex" format except for 982 the default value. 984 14. Presentation level considerations 986 ITU-T T.140 [T140] provides the presentation level requirements for 987 the RFC 4103 [RFC4103] transport. T.140 [T140] has functions for 988 erasure and other formatting functions and has the following general 989 statement for the presentation: 991 "The display of text from the members of the conversation should be 992 arranged so that the text from each participant is clearly readable, 993 and its source and the relative timing of entered text is visualized 994 in the display. Mechanisms for looking back in the contents from the 995 current session should be provided. The text should be displayed as 996 soon as it is received." 998 Strict application of T.140 [T140] is of essence for the 999 interoperability of real-time text implementations and to fulfill the 1000 intention that the session participants have the same information of 1001 the text contents of the conversation without necessarily having the 1002 exact same layout of the conversation. 1004 T.140 [T140] specifies a set of presentation control codes to include 1005 in the stream. Some of them are optional. Implementations MUST be 1006 able to ignore optional control codes that they do not support. 1008 There is no strict "message" concept in real-time text. Line 1009 Separator SHALL be used as a separator allowing a part of received 1010 text to be grouped in presentation. The characters "CRLF" may be 1011 used by other implementations as replacement for Line Separator. The 1012 "CRLF" combination SHALL be erased by just one erasing action, just 1013 as the Line Separator. Presentation functions are allowed to group 1014 text for presentation in smaller groups than the line separators 1015 imply and present such groups with source indication together with 1016 text groups from other sources (see the following presentation 1017 examples). Erasure has no specific limit by any delimiter in the 1018 text stream. 1020 14.1. Presentation by multi-party aware endpoints 1022 A multi-party aware receiving party, presenting real-time text MUST 1023 separate text from different sources and present them in separate 1024 presentation fields. The receiving party MAY separate presentation 1025 of parts of text from a source in readable groups based on other 1026 criteria than line separator and merge these groups in the 1027 presentation area when it benefits the user to most easily find and 1028 read text from the different participants. The criteria MAY e.g. be 1029 a received comma, full stop, or other phrase delimiters, or a long 1030 pause. 1032 When text is received from multiple original sources simultaneously, 1033 the presentation SHOULD provide a view where text is added in 1034 multiple places simultaneously. 1036 If the presentation presents text from different sources in one 1037 common area, the presenting endpoint SHOULD insert text from the 1038 local user ended at suitable points merged with received text to 1039 indicate the relative timing for when the text groups were completed. 1040 In this presentation mode, the receiving endpoint SHALL present the 1041 source of the different groups of text. 1043 A view of a three-party RTT call in chat style is shown in this 1044 example . 1046 _________________________________________________ 1047 | |^| 1048 |[Alice] Hi, Alice here. |-| 1049 | | | 1050 |[Bob] Bob as well. | | 1051 | | | 1052 |[Eve] Hi, this is Eve, calling from Paris. | | 1053 | I thought you should be here. | | 1054 | | | 1055 |[Alice] I am coming on Thursday, my | | 1056 | performance is not until Friday morning.| | 1057 | | | 1058 |[Bob] And I on Wednesday evening. | | 1059 | | | 1060 |[Alice] Can we meet on Thursday evening? | | 1061 | | | 1062 |[Eve] Yes, definitely. How about 7pm. | | 1063 | at the entrance of the restaurant | | 1064 | Le Lion Blanc? | | 1065 |[Eve] we can have dinner and then take a walk |-| 1066 |______________________________________________|v| 1067 | But I need to be back to |^| 1068 | the hotel by 11 because I need |-| 1069 | | | 1070 | I wou |-| 1071 |______________________________________________|v| 1072 | of course, I underst | 1073 |________________________________________________| 1075 Figure 3: Example of a three-party RTT call presented in chat style 1076 seen at participant 'Alice's endpoint. 1078 Other presentation styles than the chat style may be arranged. 1080 This figure shows how a coordinated column view MAY be presented. 1082 _____________________________________________________________________ 1083 | Bob | Eve | Alice | 1084 |____________________|______________________|_______________________| 1085 | | |I will arrive by TGV. | 1086 |My flight is to Orly| |Convenient to the main | 1087 | |Hi all, can we plan |station. | 1088 | |for the seminar? | | 1089 |Eve, will you do | | | 1090 |your presentation on| | | 1091 |Friday? |Yes, Friday at 10. | | 1092 |Fine, wo | |We need to meet befo | 1093 |___________________________________________________________________| 1094 Figure 4: An example of a coordinated column-view of a three-party 1095 session with entries ordered vertically in approximate time-order. 1097 14.2. Multi-party mixing for multi-party unaware endpoints 1099 When the mixer has indicated multi-party capability by the "text/rex" 1100 format in an SDP negotiation, but the multi-party capability 1101 negotiation fails with an endpoint, then the agreed "text/red" or 1102 "text/t140" format SHALL be used and the mixer SHOULD compose a best- 1103 effort presentation of multi-party real-time text in one stream 1104 intended to be presented by an endpoint with no multi-party 1105 awareness. 1107 This presentation format has functional limitations and SHOULD be 1108 used only to enable participation in multi-party calls by legacy 1109 deployed endpoints implementing only RFC 4103 without the multi-party 1110 extension specified in this document. 1112 The principles and procedures below do not specify any new protocol 1113 elements. They are instead composed from the information in ITU-T 1114 T.140 [T140] and an ambition to provide a best effort presentation on 1115 an endpoint which has functions only for two-party calls. 1117 The mixer mixing for multi-party unaware endpoints SHALL compose a 1118 simulated limited multi-party RTT view suitable for presentation in 1119 one presentation area. The mixer SHALL group text in suitable groups 1120 and prepare for presentation of them by inserting a new line between 1121 them if the transmitted text did not already end with a new line. A 1122 presentable label SHOULD be composed and sent for the source 1123 initially in the session and after each source switch. With this 1124 procedure the time for source switching is depending on the actions 1125 of the users. In order to expedite source switch, a user can for 1126 example end its turn with a new line. 1128 14.2.1. Actions by the mixer at reception from the call participants 1130 When text is received by the mixer from the different participants, 1131 the mixer SHALL recover text from redundancy if any packets are lost. 1132 The mark for lost text [T140ad1] SHOULD be inserted in the stream if 1133 unrecoverable loss appears. Any Unicode "BOM" characters, possibly 1134 used for keep-alive shall be deleted. The time of creation of text 1135 (retrieved from the RTP timestamp) SHALL be stored together with the 1136 received text from each source in queues for transmission to the 1137 recipients. 1139 14.2.2. Actions by the mixer for transmission to the recipients 1141 The following procedure SHOULD be applied for each recipient of 1142 multi-part text from the mixer. 1144 The text for transmission SHOULD be formatted by the mixer for each 1145 receiving user for presentation in one single presentation area. 1146 Text received from a participant SHOULD NOT be included in 1147 transmission to that participant. When there is text available for 1148 transmission from the mixer to a receiving party from more than one 1149 participant, the mixer SHOULD switch between transmission of text 1150 from the different sources at suitable points in the transmitted 1151 stream. 1153 When switching source, the mixer SHOULD insert a line separator if 1154 the already transmitted text did not end with a new line (line 1155 separator or CRLF). A label SHOULD be composed from information in 1156 the CNAME and NAME fields in RTCP reports from the participant to 1157 have its text transmitted, or from other session information for that 1158 user. The label SHOULD be delimited by suitable characters (e.g. '[ 1159 ]') and transmitted. The CSRC SHOULD indicate the selected source. 1160 Then text from that selected participant SHOULD be transmitted until 1161 a new suitable point for switching source is reached. 1163 Seeking a suitable point for switching source SHOULD be done when 1164 there is older text waiting for transmission from any party than the 1165 age of the last transmitted text. Suitable points for switching are: 1167 * A completed phrase ended by comma 1169 * A completed sentence 1171 * A new line (line separator or CRLF) 1173 * A long pause (e.g. > 10 seconds) in received text from the 1174 currently transmitted source 1176 * If text from one participant has been transmitted with text from 1177 other sources waiting for transmission for a long time (e.g. > 1 1178 minute) and none of the other suitable points for switching has 1179 occurred, a source switch MAY be forced by the mixer at next word 1180 delimiter, and also if even a word delimiter does not occur within 1181 a time (e.g. 15 seconds) after the scan for word delimiter 1182 started. 1184 When switching source, the source which has the oldest text in queue 1185 SHOULD be selected to be transmitted. A character display count 1186 SHOULD be maintained for the currently transmitted source, starting 1187 at zero after the label is transmitted for the currently transmitted 1188 source. 1190 The status SHOULD be maintained for the latest control code for 1191 Select Graphic Rendition (SGR) from each source. If there is an SGR 1192 code stored as the status for the current source before the source 1193 switch is done, a reset of SGR shall be sent by the sequence SGR 0 1194 [009B 0000 006D] after the new line and before the new label during a 1195 source switch. See SGR below for an explanation. This transmission 1196 does not influence the display count. 1198 If there is an SGR code stored for the new source after the source 1199 switch, that SGR code SHOULD be transmitted to the recipient before 1200 the label. This transmission does not influence the display count. 1202 14.2.3. Actions on transmission of text 1204 Text from a source sent to the recipient SHOULD increase the display 1205 count by one per transmitted character. 1207 14.2.4. Actions on transmission of control codes 1209 The following control codes specified by T.140 require specific 1210 actions. They SHOULD cause specific considerations in the mixer. 1211 Note that the codes presented here are expressed in UCS-16, while 1212 transmission is made in UTF-8 transform of these codes. 1214 BEL 0007 Bell Alert in session, provides for alerting during an 1215 active session. The display count SHOULD not be altered. 1217 NEW LINE 2028 Line separator. Check and perform a source switch if 1218 appropriate. Increase display count by 1. 1220 CR LF 000D 000A A supported, but not preferred way of requesting a 1221 new line. Check and perform a source switch if appropriate. 1222 Increase display count by 1. 1224 INT ESC 0061 Interrupt (used to initiate mode negotiation 1225 procedure). The display count SHOULD not be altered. 1227 SGR 009B Ps 006D Select graphic rendition. Ps is rendition 1228 parameters specified in ISO 6429. The display count SHOULD not be 1229 altered. The SGR code SHOULD be stored for the current source. 1231 SOS 0098 Start of string, used as a general protocol element 1232 introducer, followed by a maximum 256 bytes string and the ST. 1233 The display count SHOULD not be altered. 1235 ST 009C String terminator, end of SOS string. The display count 1236 SHOULD not be altered. 1238 ESC 001B Escape - used in control strings. The display count SHOULD 1239 not be altered for the complete escape code. 1241 Byte order mark "BOM" (U+FEFF) "Zero width, no break space", used 1242 for synchronization and keep-alive. SHOULD be deleted from 1243 incoming streams. Shall be sent first after session establishment 1244 to the recipient. The display count shall not be altered. 1246 Missing text mark (U+FFFD) "Replacement character", represented as a 1247 question mark in a rhombus, or if that is not feasible, replaced 1248 by an apostrophe ', marks place in stream of possible text loss. 1249 SHOULD be inserted by the reception procedure in case of 1250 unrecoverable loss of packets. The display count SHOULD be 1251 increased by one when sent as for any other character. 1253 SGR If a control code for selecting graphic rendition (SGR), other 1254 than reset of the graphic rendition (SGR 0) is sent to a 1255 recipient, that control code shall also be stored as status for 1256 the source in the storage for SGR status. If a reset graphic 1257 rendition (SGR 0) originated from a source is sent, then the SGR 1258 status storage for that source shall be cleared. The display 1259 count shall not be increased. 1261 BS (U+0008) Back Space, intended to erase the last entered character 1262 by a source. Erasure by backspace cannot always be performed as 1263 the erasing party intended. If an erasing action erases all text 1264 up to the end of the leading label after a source switch, then the 1265 mixer must not transmit more backspaces. Instead it is 1266 RECOMMENDED that a letter "X" is inserted in the text stream for 1267 each backspace as an indication of the intent to erase more. A 1268 new line is usually coded by a Line Separator, but the character 1269 combination "CRLF" MAY be used instead. Erasure of a new line is 1270 in both cases done by just one erasing action (Backspace). If the 1271 display count has a positive value it is decreased by one when the 1272 BS is sent. If the display count is at zero, it is not altered. 1274 14.2.5. Packet transmission 1276 A mixer transmitting to a multi-party unaware terminal SHOULD send 1277 primary data only from one source per packet. The SSRC SHOULD be the 1278 SSRC of the mixer. The CSRC list SHOULD contain one member and be 1279 the SSRC of the source of the primary data. 1281 14.2.6. Functional limitations 1283 When a multi-party unaware endpoint presents a conversation in one 1284 display area in a chat style, it inserts source indications for 1285 remote text and local user text as they are merged in completed text 1286 groups. When an endpoint using this layout receives and presents 1287 text mixed for multi-party unaware endpoints, there will be two 1288 levels of source indicators for the received text; one generated by 1289 the mixer and inserted in a label after each source switch, and 1290 another generated by the receiving endpoint and inserted after each 1291 switch between local and remote source in the presentation area. 1292 This will waste display space and look inconsistent to the reader. 1294 New text can be presented only from one source at a time. Switch of 1295 source to be presented takes place at suitable places in the text, 1296 such as end of phrase, end of sentence, line separator and 1297 inactivity. Therefore the time to switch to present waiting text 1298 from other sources may become long and will vary and depend on the 1299 actions of the currently presented source. 1301 Erasure can only be done up to the latest source switch. If a user 1302 tries to erase more text, the erasing actions will be presented as 1303 letter X after the label. 1305 Text loss because of network errors may hit the label between entries 1306 from different parties, causing risk for misunderstanding from which 1307 source a piece of text is. 1309 These facts makes it strongly RECOMMENDED to implement multi-party 1310 awareness in RTT endpoints. The use of the mixing method for multi- 1311 party-unaware endpoints should be left for use with endpoints which 1312 are impossible to upgrade to become multi-party aware. 1314 14.2.7. Example views of presentation on multi-party unaware endpoints 1316 The following pictures are examples of the view on a participant's 1317 display for the multi-party-unaware case. 1319 _________________________________________________ 1320 | Conference | Alice | 1321 |________________________|_________________________| 1322 | |I will arrive by TGV. | 1323 |[Bob]:My flight is to |Convenient to the main | 1324 |Orly. |station. | 1325 |[Eve]:Hi all, can we | | 1326 |plan for the seminar. | | 1327 | | | 1328 |[Bob]:Eve, will you do | | 1329 |your presentation on | | 1330 |Friday? | | 1331 |[Eve]:Yes, Friday at 10.| | 1332 |[Bob]: Fine, wo |We need to meet befo | 1333 |________________________|_________________________| 1335 Figure 5: Alice who has a conference-unaware client is receiving the 1336 multi-party real-time text in a single-stream. This figure shows how 1337 a coordinated column view MAY be presented on Alice's device. 1339 _________________________________________________ 1340 | |^| 1341 |[Alice] Hi, Alice here. |-| 1342 | | | 1343 |[mix][Bob] Bob as well. | | 1344 | | | 1345 |[Eve] Hi, this is Eve, calling from Paris | | 1346 | I thought you should be here. | | 1347 | | | 1348 |[Alice] I am coming on Thursday, my | | 1349 | performance is not until Friday morning.| | 1350 | | | 1351 |[mix][Bob] And I on Wednesday evening. | | 1352 | | | 1353 |[Eve] we can have dinner and then walk | | 1354 | | | 1355 |[Eve] But I need to be back to | | 1356 | the hotel by 11 because I need | | 1357 | |-| 1358 |______________________________________________|v| 1359 | of course, I underst | 1360 |________________________________________________| 1362 Figure 6: An example of a view of the multi-party unaware 1363 presentation in chat style. Alice is the local user. 1365 15. Gateway Considerations 1366 15.1. Gateway considerations with Textphones (e.g. TTYs). 1368 Multi-party RTT sessions may involve gateways of different kinds. 1369 Gateways involved in setting up sessions SHALL correctly reflect the 1370 multi-party capability or unawareness of the combination of the 1371 gateway and the remote endpoint beyond the gateway. 1373 One case that may occur is a gateway to PSTN for communication with 1374 textphones (e.g. TTYs). Textphones are limited devices with no 1375 multi-party awareness, and it SHOULD therefore be suitable for the 1376 gateway to not indicate multi-party awareness for that case. Another 1377 solution is that the gateway indicates multi-party capability towards 1378 the mixer, and includes the multi-party mixer function for multi- 1379 party unaware endpoints itself. This solution makes it possible to 1380 make adaptations for the functional limitations of the textphone 1381 (TTY). 1383 More information on gateways to textphones (TTYs) is found in RFC 1384 5194[RFC5194] 1386 15.2. Gateway considerations with WebRTC. 1388 Gateway operation to real-time text in WebRTC may also be required. 1389 In WebRTC, RTT is specified in draft-ietf-mmusic-t140-usage-data- 1390 channel[I-D.ietf-mmusic-t140-usage-data-channel]. 1392 A multi-party bridge may have functionality for communicating by RTT 1393 both in RTP streams with RTT and WebRTC t140 data channels. Other 1394 configurations may consist of a multi-party bridge with either 1395 technology for RTT transport and a separate gateway for conversion of 1396 the text communication streams between RTP and t140 data channel. 1398 In WebRTC, it is assumed that for a multi-party session, one t140 1399 data channel is established for each source from a gateway or bridge 1400 to each participant. Each participant also has a data channel with 1401 two-way connection with the gateway or bridge. 1403 The t140 channel used both ways is for text from the WebRTC user and 1404 from the bridge or gateway itself to the WebRTC user. The label 1405 parameter of this t140 channel is used as NAME field in RTCP to 1406 participants on the RTP side. The other t140 channels are only for 1407 text from other participants to the WebRTC user. 1409 When a new participant has entered the session with RTP transport of 1410 rtt, a new t140 channel SHOULD be established to WebRTC users with 1411 the label parameter composed from the NAME field in RTCP on the RTP 1412 side. 1414 When a new participant has entered the multi-party session with RTT 1415 transport in a WebRTC t140 data channel, the new participant SHOULD 1416 be announced by a notification to RTP users. The label parameter 1417 from the WebRTC side SHOULD be used as the NAME RTCP field on the RTP 1418 side, or other available session information. 1420 16. Updates to RFC 4102 and RFC 4103 1422 This document updates RFC 4102[RFC4102] and RFC 4103[RFC4103] by 1423 introducing an extended packet format "text/rex" for the multi-party 1424 mixing case and more strict rules for the use of redundancy, and 1425 population of the CSRC list in the packets. Implications for the 1426 CSRC list use from RFC 2198[RFC2198] are hereby not in effect. 1428 17. Congestion considerations 1430 The congestion considerations and recommended actions from RFC 4103 1431 [RFC4103] are valid also in multi-party situations. 1433 The first action in case of congestion SHOULD be to temporarily 1434 increase the transmission interval up to one second. 1436 18. Acknowledgements 1438 James Hamlin for format input. 1440 19. IANA Considerations 1442 The IANA is requested to register the media type "text/rex" as 1443 specified in Section 10. The media type is also requested to be 1444 added to the IANA registry for "RTP Payload Format Media Types" 1445 . 1447 20. Security Considerations 1449 The RTP-mixer model requires the mixer to be allowed to decrypt, pack 1450 and encrypt secured text from the conference participants. Therefore 1451 the mixer needs to be trusted. This is similar to the situation for 1452 central mixers of audio and video. 1454 The requirement to transfer information about the user in RTCP 1455 reports in SDES, CNAME and NAME fields, and in conference 1456 notifications, for creation of labels may have privacy concerns as 1457 already stated in RFC 3550 [RFC3550], and may be restricted of 1458 privacy reasons. The receiving user will then get a more symbolic 1459 label for the source. 1461 21. Change history 1463 21.1. Changes included in draft-ietf-avtcore-multi-party-rtt-mix-05 1465 nomenclature and editorial improvements 1467 "this document" used consistently to refer to this document. 1469 21.2. Changes included in draft-ietf-avtcore-multi-party-rtt-mix-04 1471 'Redundancy header' renamed to 'data header'. 1473 More clarifications added. 1475 Language and figure number corrections. 1477 21.3. Changes included in draft-ietf-avtcore-multi-party-rtt-mix-03 1479 Mention possible need to mute and raise hands as for other media. 1480 ---done ---- 1482 Make sure that use in two-party calls is also possible and explained. 1483 - may need more wording - 1485 Clarify the RTT is often used together with other media. --done-- 1487 Tell that text mixing is N-1. A users own text is not received in 1488 the mix. -done- 1490 In 3. correct the interval to: A "text/rex" transmitter SHOULD send 1491 packets distributed in time as long as there is something (new or 1492 redundant T140blocks) to transmit. The maximum transmission interval 1493 SHOULD then be 300 ms. It is RECOMMENDED to send a packet to a 1494 receiver as soon as new text to that receiver is available, as long 1495 as the time after the latest sent packet to the same receiver is more 1496 than 150 ms, and also the maximum character rate to the receiver is 1497 not exceeded. The intention is to keep the latency low while keeping 1498 a good protection against text loss in bursty packet loss conditions. 1499 -done- 1501 In 1.3 say that the format is used both ways. -done- 1503 In 13.1 change presentation area to presentation field so that reader 1504 does not think it shall be totally separated. -done- 1506 In Performance and intro, tell the performance in number of 1507 simultaneous sending users and introduced delay 16, 150 vs 1508 requirements 5 vs 500. -done -- 1509 Clarify redundancy level per connection. -done- 1511 Timestamp also for the last data header. To make it possible for all 1512 text to have time offset as for transmission from the source. Make 1513 that header equal to the others. -done- 1515 Mixer always use the CSRC list, even for its own BOM. -done- 1517 Combine all talk about transmission interval (300 ms vs when text has 1518 arrived) in section 3 in one paragraph or close to each other. -done- 1520 Documents the goal of good performance with low delay for 5 1521 simultaneous typers in the introduction. -done- 1523 Describe better that only primary text shall be sent on to receivers. 1524 Redundancy and loss must be resolved by the mixer. -done- 1526 21.4. Changes included in draft-ietf-avtcore-multi-party-rtt-mix-02 1528 SDP and better description and visibility of security by OSRTP RFC 1529 8634 needed. 1531 The description of gatewaying to WebRTC extended. 1533 The description of the data header in the packet is improved. 1535 21.5. Changes to draft-ietf-avtcore-multi-party-rtt-mix-01 1537 2,5,6 More efficient format "text/rex" introduced and attribute 1538 a=rtt-mix deleted. 1540 3. Brief about use of OSRTP for security included- More needed. 1542 4. Brief motivation for the solution and why not rtp-translator is 1543 used added to intro. 1545 7. More limitations for the multi-party unaware mixing method 1546 inserted. 1548 8. Updates to RFC 4102 and 4103 more clearly expressed. 1550 9. Gateway to WebRTC started. More needed. 1552 21.6. Changes from draft-hellstrom-avtcore-multi-party-rtt-source-03 to 1553 draft-ietf-avtcore-multi-party-rtt-mix-00 1555 Changed file name to draft-ietf-avtcore-multi-party-rtt-mix-00 1556 Replaced CDATA in IANA registration table with better coding. 1558 Converted to xml2rfc version 3. 1560 21.7. Changes from draft-hellstrom-avtcore-multi-party-rtt-source-02 to 1561 -03 1563 Changed company and e-mail of the author. 1565 Changed title to "RTP-mixer formatting of multi-party Real-time text" 1566 to better match contents. 1568 Check and modification where needed of use of RFC 2119 words SHALL 1569 etc. 1571 More about the CC value in sections on transmitters and receivers so 1572 that 1-to-1 sessions do not use the mixer format. 1574 Enhanced section on presentation for multi-party-unaware endpoints 1576 A paragraph recommending CPS=150 inserted in the performance section. 1578 21.8. Changes from draft-hellstrom-avtcore-multi-party-rtt-source-01 to 1579 -02 1581 In Abstract and 1. Introduction: Introduced wording about regulatory 1582 requirements. 1584 In section 5: The transmission interval is decreased to 100 ms when 1585 there is text from more than one source to transmit. 1587 In section 11 about SDP negotiation, a SHOULD-requirement is 1588 introduced that the mixer should make a mix for multi-party unaware 1589 endpoints if the negotiation is not successful. And a reference to a 1590 later chapter about it. 1592 The presentation considerations chapter 14 is extended with more 1593 information about presentation on multi-party aware endpoints, and a 1594 new section on the multi-party unaware mixing with low functionality 1595 but SHOULD a be implemented in mixers. Presentation examples are 1596 added. 1598 A short chapter 15 on gateway considerations is introduced. 1600 Clarification about the text/t140 format included in chapter 10. 1602 This sentence added to the chapter 10 about use without redundancy. 1603 "The text/red format SHOULD be used unless some other protection 1604 against packet loss is utilized, for example a reliable network or 1605 transport." 1607 Note about deviation from RFC 2198 added in chapter 4. 1609 In chapter 9. "Use with SIP centralized conferencing framework" the 1610 following note is inserted: Note: The CSRC-list in an RTP packet only 1611 includes participants who's text is included in one or more text 1612 blocks. It is not the same as the list of participants in a 1613 conference. With audio and video media, the CSRC-list would often 1614 contain all participants who are not muted whereas text participants 1615 that don't type are completely silent and so don't show up in RTP 1616 packet CSRC-lists. 1618 21.9. Changes from draft-hellstrom-avtcore-multi-party-rtt-source-00 to 1619 -01 1621 Editorial cleanup. 1623 Changed capability indication from fmtp-parameter to SDP attribute 1624 "rtt-mix". 1626 Swapped order of redundancy elements in the example to match reality. 1628 Increased the SDP negotiation section 1630 22. References 1632 22.1. Normative References 1634 [I-D.ietf-mmusic-t140-usage-data-channel] 1635 Holmberg, C. and G. Hellstrom, "T.140 Real-time Text 1636 Conversation over WebRTC Data Channels", Work in Progress, 1637 Internet-Draft, draft-ietf-mmusic-t140-usage-data-channel- 1638 14, 10 April 2020, . 1641 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1642 Requirement Levels", BCP 14, RFC 2119, 1643 DOI 10.17487/RFC2119, March 1997, 1644 . 1646 [RFC2198] Perkins, C., Kouvelas, I., Hodson, O., Hardman, V., 1647 Handley, M., Bolot, J.C., Vega-Garcia, A., and S. Fosse- 1648 Parisis, "RTP Payload for Redundant Audio Data", RFC 2198, 1649 DOI 10.17487/RFC2198, September 1997, 1650 . 1652 [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. 1653 Jacobson, "RTP: A Transport Protocol for Real-Time 1654 Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, 1655 July 2003, . 1657 [RFC4102] Jones, P., "Registration of the text/red MIME Sub-Type", 1658 RFC 4102, DOI 10.17487/RFC4102, June 2005, 1659 . 1661 [RFC4103] Hellstrom, G. and P. Jones, "RTP Payload for Text 1662 Conversation", RFC 4103, DOI 10.17487/RFC4103, June 2005, 1663 . 1665 [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session 1666 Description Protocol", RFC 4566, DOI 10.17487/RFC4566, 1667 July 2006, . 1669 [RFC4855] Casner, S., "Media Type Registration of RTP Payload 1670 Formats", RFC 4855, DOI 10.17487/RFC4855, February 2007, 1671 . 1673 [RFC5764] McGrew, D. and E. Rescorla, "Datagram Transport Layer 1674 Security (DTLS) Extension to Establish Keys for the Secure 1675 Real-time Transport Protocol (SRTP)", RFC 5764, 1676 DOI 10.17487/RFC5764, May 2010, 1677 . 1679 [RFC6263] Marjou, X. and A. Sollaud, "Application Mechanism for 1680 Keeping Alive the NAT Mappings Associated with RTP / RTP 1681 Control Protocol (RTCP) Flows", RFC 6263, 1682 DOI 10.17487/RFC6263, June 2011, 1683 . 1685 [RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type 1686 Specifications and Registration Procedures", BCP 13, 1687 RFC 6838, DOI 10.17487/RFC6838, January 2013, 1688 . 1690 [RFC8643] Johnston, A., Aboba, B., Hutton, A., Jesske, R., and T. 1691 Stach, "An Opportunistic Approach for Secure Real-time 1692 Transport Protocol (OSRTP)", RFC 8643, 1693 DOI 10.17487/RFC8643, August 2019, 1694 . 1696 [T140] ITU-T, "Recommendation ITU-T T.140 (02/1998), Protocol for 1697 multimedia application text conversation", February 1998, 1698 . 1700 [T140ad1] ITU-T, "Recommendation ITU-T.140 Addendum 1 - (02/2000), 1701 Protocol for multimedia application text conversation", 1702 February 2000, 1703 . 1705 22.2. Informative References 1707 [RFC4353] Rosenberg, J., "A Framework for Conferencing with the 1708 Session Initiation Protocol (SIP)", RFC 4353, 1709 DOI 10.17487/RFC4353, February 2006, 1710 . 1712 [RFC4575] Rosenberg, J., Schulzrinne, H., and O. Levin, Ed., "A 1713 Session Initiation Protocol (SIP) Event Package for 1714 Conference State", RFC 4575, DOI 10.17487/RFC4575, August 1715 2006, . 1717 [RFC4579] Johnston, A. and O. Levin, "Session Initiation Protocol 1718 (SIP) Call Control - Conferencing for User Agents", 1719 BCP 119, RFC 4579, DOI 10.17487/RFC4579, August 2006, 1720 . 1722 [RFC5194] van Wijk, A., Ed. and G. Gybels, Ed., "Framework for Real- 1723 Time Text over IP Using the Session Initiation Protocol 1724 (SIP)", RFC 5194, DOI 10.17487/RFC5194, June 2008, 1725 . 1727 Author's Address 1729 Gunnar Hellstrom 1730 Gunnar Hellstrom Accessible Communication 1731 Esplanaden 30 1732 SE-13670 Vendelso 1733 Sweden 1735 Email: gunnar.hellstrom@ghaccess.se