idnits 2.17.1 draft-ietf-avtcore-multi-party-rtt-mix-01.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 583 has weird spacing: '...example from ...' == Line 598 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 (14 May 2020) is 1436 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 1124, 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) 14 May 2020 5 Intended status: Standards Track 6 Expires: 15 November 2020 8 RTP-mixer formatting of multi-party Real-time text 9 draft-ietf-avtcore-multi-party-rtt-mix-01 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 15 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 . . . . . . . . . . . . . 7 79 4. Actions at reception . . . . . . . . . . . . . . . . . . . . 9 80 5. RTCP considerations . . . . . . . . . . . . . . . . . . . . . 10 81 6. Chained operation . . . . . . . . . . . . . . . . . . . . . . 10 82 7. Usage without redundancy . . . . . . . . . . . . . . . . . . 10 83 8. Use with SIP centralized conferencing framework . . . . . . . 11 84 9. Media Subtype Registration . . . . . . . . . . . . . . . . . 11 85 10. SDP considerations . . . . . . . . . . . . . . . . . . . . . 12 86 11. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 14 87 12. Performance considerations . . . . . . . . . . . . . . . . . 17 88 13. Presentation level considerations . . . . . . . . . . . . . . 17 89 13.1. Presentation by multi-party aware endpoints . . . . . . 18 90 13.2. Multi-party mixing for multi-party unaware endpoints . . 20 91 14. Gateway Considerations . . . . . . . . . . . . . . . . . . . 26 92 15. Updates to RFC 4102 and RFC 4103 . . . . . . . . . . . . . . 26 93 16. Congestion considerations . . . . . . . . . . . . . . . . . . 26 94 17. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 26 95 18. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 96 19. Security Considerations . . . . . . . . . . . . . . . . . . . 27 97 20. Change history . . . . . . . . . . . . . . . . . . . . . . . 27 98 20.1. Changes to draft-ietf-avtcore-multi-party-rtt-mix-01 . . 27 99 20.2. Changes from 100 draft-hellstrom-avtcore-multi-party-rtt-source-03 to 101 draft-ietf-avtcore-multi-party-rtt-mix-00 . . . . . . . 27 102 20.3. Changes from 103 draft-hellstrom-avtcore-multi-party-rtt-source-02 to 104 -03 . . . . . . . . . . . . . . . . . . . . . . . . . . 27 105 20.4. Changes from 106 draft-hellstrom-avtcore-multi-party-rtt-source-01 to 107 -02 . . . . . . . . . . . . . . . . . . . . . . . . . . 28 108 20.5. Changes from 109 draft-hellstrom-avtcore-multi-party-rtt-source-00 to 110 -01 . . . . . . . . . . . . . . . . . . . . . . . . . . 29 111 21. References . . . . . . . . . . . . . . . . . . . . . . . . . 29 112 21.1. Normative References . . . . . . . . . . . . . . . . . . 29 113 21.2. Informative References . . . . . . . . . . . . . . . . . 30 114 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 31 116 1. Introduction 118 RFC 4103[RFC4103] specifies use of RFC 3550 RTP [RFC3550] for 119 transmission of real-time text (RTT) and the "text/t140" format. It 120 also specifies a redundancy format "text/red" for increased 121 robustness. RFC 4102 [RFC4102] registers the "text/red" format. 122 Regional regulatory requirements specify provision of real-time text 123 in multi-party calls. 125 The redundancy scheme enables efficient transmission of redundant 126 text in packets together with new text. However the redundant header 127 format has no source indicators for the redundant transmissions. An 128 assumption has had to be made that the redundant parts in a packet 129 are from the same source as the new text. The recommended 130 transmission is one new and two redundant generations of text 131 (T140blocks) in each packet and the recommended transmission interval 132 is 300 ms. 134 A mixer, selecting between text input from different sources and 135 transmitting it in a common stream needs to make sure that the 136 receiver can assign the received text to the proper sources for 137 presentation. Therefore, using RFC 4103 without any extra rule for 138 source identification, the mixer needs to stop sending new text from 139 that source and then make sure that all text so far has been sent 140 with all intended redundancy levels (usually two) before switching 141 source. That causes the very long time of one second to switch 142 between transmission of text from one source to text from another 143 source. Both the total throughput and the switching performance in 144 the mixer is too low for most applications. 146 A more efficient source identification scheme requires that each 147 redundant T140block has its source individually preserved. The 148 present specification introduces a source indicator by specific rules 149 for populating the CSRC-list and the redundancy header in the RTP- 150 packet. 152 An extended packet format 'text/rex' is specified for this purpose, 153 providing the possibility to include text from up to 16 sources in 154 each packet in order to enhance mixer source switching performance. 156 A negotiation mechanism can therefore be based on selection between 157 the "text/red" and the "text/rex" media formats for verification that 158 the receiver is able to handle the multi-party coded stream. 160 A fall-back mixing procedure is specified for cases when the 161 negotiation results in "text/red" being the only common submedia 162 format. 164 The document updates RFC 4102[RFC4102] and RFC 4103[RFC4103] by 165 introducing an extended packet format for the multi-party mixing case 166 and more strict rules for the use of redundancy. 168 1.1. Selected solution and considered alternative 170 The mechanism specified in the present document makes use of the RTP 171 mixer model specified in RFC3550[RFC3550]. From some points of view, 172 use of the RTP translator model specified in RFC 3550 would be more 173 efficient, because then the text packets can pass the translator with 174 only minor modification. However, there may be a lack of support for 175 the translator model in existing RTP implementations, and therefore 176 the more common RTP-mixer model was selected. 178 1.2. Nomenclature 180 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 181 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 182 document are to be interpreted as described in [RFC2119]. 184 The terms SDES, CNAME, NAME, SSRC, CSRC, CSRC list, CC are explained 185 in [RFC3550] 187 The term "T140block" is defined in RFC 4103 [RFC4103] to contain one 188 or more T.140 code elements. 190 1.3. Intended application 192 The scheme for identification of source of redundant transmissions is 193 intended for transmission from entities taking the mixer role in 194 centralised mixing configurations for RTT. It is intended for 195 reception by both endpoints and mixers. 197 2. Use of fields in the RTP packets 199 RFC 4103[RFC4103] specifies use of RFC 3550 RTP[RFC3550], and a 200 redundancy format "text/red" for increased robustness. This 201 specification updates RFC 4102[RFC4102] and RFC 4103[RFC4103] by 202 introducing a rule for populating and using the CSRC-list in the RTP 203 packet and extending the redundancy header in order to enhance the 204 performance in multi-party RTT sessions. 206 When transmitted from a mixer, the members in the CSRC-list SHALL 207 contain the SSRCs of the sources of the T140blocks in the packet. 208 When redundancy is used, text from all included sources MUST have the 209 same number of redundancy generations. The primary, second and 210 further redundant generations of T140blocks are grouped per source in 211 the packet in "source groups" and in the same order as the SSRCs of 212 the sources in the CSRC list. ( the recommended level of redundancy 213 is to use one primary and two redundant generations of T140blocks.) 214 In some cases, a primary or redundant T140block is empty, but is 215 still represented by a member in the redundancy header. 217 The CC field SHALL show the number of members in the CSRC list. 219 This specification departs from section 4 of RFC 2198 [RFC2198] which 220 associates the whole of the CSRC-list with the primary data and 221 assumes that the same list applies to reconstructed redundant data. 222 In the present specification a T140block is associated with exactly 223 one CSRC list member as described above. Also RFC 2198 [RFC2198] 224 anticipates infrequent change to CSRCs; implementers should be aware 225 that the order of the CSRC-list according to this specification will 226 vary during transitions between transmission from the mixer of text 227 originated by different participants. 229 The picture below shows a typical 'text/rex' RTP packet with multi- 230 party RTT contents and coding according to the present specification. 232 0 1 2 3 233 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 234 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 235 |V=2|P|X| CC=3 |M| "REX" PT | RTP sequence number | 236 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 237 | timestamp of packet creation | 238 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 239 | synchronization source (SSRC) identifier | 240 +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ 241 | CSRC list member 1 = SSRC of source of "A" | 242 | CSRC list member 2 = SSRC of source of "B" | 243 | CSRC list member 3 = SSRC of source of "C" | 244 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 245 |1| T140 PT |timestmp offset of "A-R2" |"A-R2" block length| 246 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 247 |1| T140 PT |timestamp offset of "A-R1" |"A-R1" block length| 248 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 249 |1| T140 PT | timestamp offset of "A-P" |"A-P" block length | 250 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 251 |1| T140 PT |timestamp offset of "B-R2" |"B-R2" block length| 252 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 253 |1| T140 PT |timestamp offset of "B-R1" |"B-R1" block length| 254 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 255 |1| T140 PT | timestamp offset of "B-P" | "B-P" block length| 256 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 257 |1| T140 PT |timestamp offset of "C-R2" |"C-R2" block length| 258 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 259 |1| T140 PT |timestamp offset of "C-R1" |"C-R1" block length| 260 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 261 |0| T140 PT | "A-R2" T.140 encoded redundant data | 262 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---------------+ 263 | | "A-R1" T.140 encoded redundant data | | 264 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---------------+ 265 | "A-P" T.140 encoded primary data | | 266 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---------------+ 267 | "B-R2" T.140 encoded redundant data | | 268 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---------------+ 269 | | "B-R1" T.140 encoded redundant data | | 270 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---------------+ 271 | "B-P" T.140 encoded primary data | | 272 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---------------+ 273 | "C-R2" T.140 encoded redundant data | | 274 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---------------+ 275 | | "C-R1" T.140 encoded redundant data | | 276 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 277 | "C-P" T.140 encoded primary data | 278 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 279 Figure 1:A 'text/rex' packet with text from three sources A, B, C. 281 3. Actions at transmission by a mixer 283 A "text/rex" transmitter is sending packets at least at regular 284 transmission intervals as long as there is something (new or 285 redundant T140blocks) to transmit. The default transmission interval 286 for point-to-point operation is 300 ms. 288 As soon as a participant is known to participate in a session and 289 being available for text reception, a Unicode BOM character SHALL be 290 sent to it according to the procedures in the present document. 292 After that, the transmitter SHALL send keep-alive traffic to the 293 receivers at regular intervals when no other traffic has occurred 294 during that interval if that is decided for the actual connection. 295 Recommendations for keep-alive can be found in RFC 6263[RFC6263]. 297 For multi-party operation, it is RECOMMENDED that the mixer sends a 298 packet to each receiver as soon as text has been received from a 299 source as long as the maximum number of characters per second 300 indicated by the recipient is not exceeded, and also the number of 301 packets sent per second to a recipient is kept under a specified 302 number. This number SHALL be 10 if no other limit is applied for the 303 application. The intention is to keep the latency introduced by the 304 mixer low. 306 The mixer has its own SSRC, and its own RTP sequence number series. 308 The number of redundant generations of T140blocks to include in 309 transmitted packets SHALL be deducted from the SDP negotiation. It 310 SHOULD be set to the minimum of the number declared by the receiver 311 and the transmitter. The same number of redundant generations MUST 312 be used for all sources in the transmissions. The number of 313 generations sent to a receiver SHALL be the same during the whole 314 session unless it is modified by session renegotiation. 316 At time of transmission, the mixer SHALL populate the RTP packet with 317 T140blocks combined from all T140blocks queued for transmission 318 originating from each source as long as this is not in conflict with 319 the allowed number of characters per second or the maximum packet 320 size. These T140blocks SHALL be placed in the packet interleaved 321 with redundant T140blocks and new T140blocks from other sources. The 322 primary and redundant T140blocks from each source are grouped 323 together in "source groups" appearing in the packet in the same order 324 as the corresponding CSRC list member and redundancy header members 325 for the source group. The format of the redundancy header members 326 and the T140blocks in each source group are the same as for the 327 single source possible in the "text/red" format. The SSRC of each 328 source shall be placed as a member in the CSRC-list at a place 329 corresponding to the place of its T140blocks in the packet. The 330 current time SHALL be inserted in the timestamp. The timestamp 331 offset values for empty T140blocks have no relevance but SHOULD be 332 assigned realistic values. 334 Text from a maximum of 16 sources MAY be included in a packet. The 335 reason for this limitation is the maximum number of CSRC list 336 members. If text from more sources need to be transmitted, the mixer 337 MAY let the sources take turns in having their text transmitted. 338 When stopping transmission of one source to allow another source to 339 have its text sent, all intended redundant generations of the last 340 text from the source to be stopped MUST be transmitted before text 341 from another source can be transmitted. Actively transmitting 342 sources SHOULD be allowed to take turns with short intervals to have 343 their text transmitted. 345 If no unsent T140blocks were available at this time for a source, but 346 T140blocks are available which have not yet been sent the full 347 intended number of redundant transmissions, then the primary 348 T140block for that source is composed of an empty T140block, and 349 populated (without taking up any length) in a packet for 350 transmission. The corresponding SSRC SHALL be placed in its place in 351 the CSRC-list. 353 The primary T140block from each source in the latest transmission is 354 used to populate the first redundant T140block for that source. The 355 first redundant T140block for that source from the latest 356 transmission is placed as the second redundant T140block source. 358 Usually this is the level of redundancy used. If a higher number of 359 redundancy is negotiated, then the procedure SHALL be maintained 360 until all available redundant levels of T140blocks and their sources 361 are placed in the packet. If a receiver has negotiated a lower 362 number of text/rex generations, then that level shall be the maximum 363 used by the transmitter. 365 The timer offset values are inserted in the redundancy header, with 366 the time offset from the RTP timestamp in the packet when the 367 corresponding T140block was sent from the mixer as primary. 369 The number of members in the CSRC list shall be placed in the "CC" 370 header field. Only mixers place values >0 in the "CC" field. 372 When there is no new T140block to transmit, and no redundant 373 T140block that has not been retransmitted the intended number of 374 times, the transmission process can stop until either new T140blocks 375 arrive, or a keep-alive method calls for transmission of keep-alive 376 packets. 378 4. Actions at reception 380 The "text/rex" receiver included in an endpoint with presentation 381 functions will receive RTP packets in the single stream from the 382 mixer, and SHALL distribute the T140blocks for presentation in 383 presentation areas for each source. Other receiver roles, such as 384 gateways or chained mixers are also feasible, and requires 385 consideration if the stream shall just be forwarded, or distributed 386 based on the different sources. 388 If the "CC" field value of a received packet is >1, it indicates that 389 multi-party transmission is active, and the receiver MUST act on the 390 different sources according to its role. If the CC field value is 1, 391 it indicates that there is a mixer between the source and the 392 receiver, but that there is only one source at the moment. If the CC 393 value is 0, the connection is point-to-point. 395 The used level of redundancy generations SHALL be evaluated from the 396 received packet contents. If the CC value is 0, the number of 397 generations (including the primary) is equal to the number of members 398 in the redundancy header. If the CC value is >0, the number of 399 generations (including the primary) is equal to the number of members 400 in the redundancy header divided by the CC value. If the remainder 401 from the division is >0, then the packet is malformed and SHALL cause 402 an error indication in the receiver. 404 The RTP sequence numbers of the received packets SHALL be monitored 405 for gaps and packets out of order. 407 As long as the sequence is correct, each packet SHALL be unpacked in 408 order. The T140blocks SHALL be extracted from the primary areas, and 409 the corresponding SSRCs SHALL be extracted from the corresponding 410 positions in the CSRC list and used for assigning the new T140block 411 to the correct presentation areas (or correspondingly). 413 If a sequence number gap appears and is still there after some 414 defined time for jitter resolution, T140data SHALL be recovered from 415 redundant data. If the gap is wider than the number of generations 416 of redundant T140blocks in the packet, then a t140block SHALL be 417 created with a marker for text loss [T140ad1] and assigned to the 418 SSRC of the transmitter as a general input from the mixer because in 419 general it is not possible to deduct from which sources text was 420 lost. 422 Then, the T140blocks in the received packet SHALL be retrieved 423 beginning with the highest redundant generation, grouping them with 424 the corresponding SSRC from the CSRC-list and assigning them to the 425 presentation areas per source. Finally the primary T140blocks SHALL 426 be retrieved from the packet and similarly their sources retrieved 427 from the corresponding positions in the CSRC-list, and then assigned 428 to the corresponding presentation areas for the sources. 430 If the sequence number gap was equal to or less than the number of 431 redundancy generations in the received packet, a missing text marker 432 SHALL NOT be inserted, and instead the T140blocks and their SSRCs 433 fully recovered from the redundancy information and the CSRC-list in 434 the way indicated above. 436 Unicode character BOM is used as a start indication and sometimes 437 used as a filler or keep alive by transmission implementations. 438 These SHALL be deleted on reception. 440 Empty T140blocks are included as fillers for unused redundancy levels 441 in the packets. They just do not provide any contents and do not 442 contribute to the received streams. 444 5. RTCP considerations 446 A mixer SHALL send RTCP reports with SDES, CNAME and NAME information 447 about the sources in the multi-party call. This makes it possible 448 for participants to compose a suitable label for text from each 449 source. 451 6. Chained operation 453 By strictly applying the rules for "text/rex" packet format by all 454 conforming devices, mixers MAY be arranged in chains. 456 7. Usage without redundancy 458 The "text/rex" format SHALL be used also for multi-party 459 communication when the redundancy mechanism is not used. That MAY be 460 the case when robustness in transmission is provided by some other 461 means than by redundancy. All aspects of the present document SHALL 462 be applied except the redundant generations in transmission. 464 The "text/rex" format SHOULD thus be used for multi-party operation, 465 also when some other protection against packet loss is utilized, for 466 example a reliable network or transport. The format is also allowed 467 to be used for point-to-point operation. 469 8. Use with SIP centralized conferencing framework 471 The SIP conferencing framework, mainly specified in RFC 472 4353[RFC4353], RFC 4579[RFC4579] and RFC 4575[RFC4575] is suitable 473 for coordinating sessions including multi-party RTT. The RTT stream 474 between the mixer and a participant is one and the same during the 475 conference. Participants get announced by notifications when 476 participants are joining or leaving, and further user information may 477 be provided. The SSRC of the text to expect from joined users MAY be 478 included in a notification. The notifications MAY be used both for 479 security purposes and for translation to a label for presentation to 480 other users. 482 Note: The CSRC-list in an RTP packet only includes participants who's 483 text is included in one or more text blocks. It is not the same as 484 the total list of participants in a conference. With audio and video 485 media, the CSRC-list would often contain all participants who are not 486 muted whereas text participants that don't type are completely silent 487 and thus are not represented in RTP packet CSRC-lists. 489 9. Media Subtype Registration 491 This registration is done using the template defined in [RFC6838] and 492 following [RFC4855]. 494 Type name: text 496 Subtype name: rex 498 Required parameters: rate: The RTP timestamp (clock) rate. The 499 only valid value is 1000. 501 pt: A slash-separated list with the payload 502 type number(pt) for the primary text, the first redundant text, 503 the second redundant text etc, that the receiver is capable to 504 receive. 506 Optional parameter: cps: This parameter is used to signal the 507 capabilities of a receiver implementation. It indicates the 508 maximum number of characters that may be received per second 509 measured over a period of 10 seconds. The default value is 150. 511 Encoding considerations: binary; see Section 4.8 of [RFC6838]. 513 Security considerations: See Section 19 of RFC xxxx. [RFC Editor: 514 Upon publication as an RFC, please replace "XXXX" with the number 515 assigned to this document and remove this note.] 517 Interoperability considerations: None. 519 Published specification: RFC XXXX. [RFC Editor: Upon publication as 520 an RFC, please replace "XXXX" with the number assigned to this 521 document and remove this note.] 523 Applications which use this media type: For example: Text 524 conferencing tools, multimedia conferencing tools. 526 Fragment identifier considerations: N/A. 528 Additional information: None. 530 Person & email address to contact for further information: Gunnar 531 Hellstrom 533 Intended usage: COMMON 535 Restrictions on usage: This media type depends on RTP framing, and 536 hence is only defined for transfer via RTP [RFC3550]. 538 Author: Gunnar Hellstrom 540 Change controller: IETF AVTCore Working Group delegated from the 541 IESG. 543 10. SDP considerations 545 There are receiving RTT implementations which implement RFC 4103 546 [RFC4103] but not the source separation by the CSRC. Sending mixed 547 text according to the usual CSRC convention from RFC 2198 [RFC2198] 548 to a device implementing only RFC 4103 [RFC4103] would risk to lead 549 to unreadable presented text. Therefore, in order to negotiate RTT 550 mixing capability according to the present specification, all devices 551 supporting the present specification for multi-party aware 552 participants SHALL include an sdp media format "text/rex" in the sdp, 553 indicating this capability in offers and answers. Multi-party 554 streams using the coding of the present specification intended for 555 multi-party aware endpoints MUST NOT be sent to devices which have 556 not indicated the "text/rex" format. 558 Implementations not understanding this format MUST ignore it 559 according to common SDP rules. 561 The sdp media format defined here, is named "rex", for extended 562 redundancy. It is intended to be used in "text" media descriptions 563 with "text/rex" and "text/t140" formats. Both formats MUST be 564 declared for the "text/rex" format to be used. It indicates 565 capability to use source indications in the CSRC list and the packet 566 format according to the present specification. It also indicates 567 ability to receive 150 real-time text characters per second. 569 Security SHOULD be applied. If no other security solution is 570 mandated by the application then RFC 8643 [RFC8643] MUST be applied. 571 The SDP examples below are expressed without the security additions 572 for simplicity. EDITOR NOTE - more about security------ 574 SDP offer/answer examples 576 Offer example for just multi-party capability: 578 m=text 11000 RTP/AVP 101 98 579 a=rtpmap:98 t140/1000 580 a=rtpmap:101 rex/1000 581 a=fmtp:101 98/98/98 583 Answer example from a multi-party capable device 584 m=text 12000 RTP/AVP 101 98 585 a=rtpmap:98 t140/1000 586 a=rtpmap:101 rex/1000 587 a=fmtp:101 98/98/98 589 Offer example for both traditional "text/red" and multi-party format: 591 m=text 11000 RTP/AVP 101 100 98 592 a=rtpmap:98 t140/1000 593 a=rtpmap:100 red/1000 594 a=rtpmap:101 rex/1000 595 a=fmtp:100 98/98/98 596 a=fmtp:101 98/98/98 598 Answer example from a multi-party capable device 599 m=text 11000 RTP/AVP 101 98 600 a=rtpmap:98 t140/1000 601 a=rtpmap:101 rex/1000 602 a=fmtp:101 98/98/98 604 Answer example from a multi-party unaware device: 606 m=text 12000 RTP/AVP 100 98 607 a=rtpmap:98 t140/1000 608 a=rtpmap:100 red/1000 609 a=fmtp:100 98/98/98 611 A party who has negotiated the "text/rex" format MUST populate the 612 CSRC-list and format the packets according to the present 613 specification if it acts as an rtp-mixer and sends multi-party text. 615 A party who has negotiated the "text/rex" capability MUST interpret 616 the contents of the CSRC-list and the packets according to the 617 present specification in received rtp packets using the corresponding 618 payload type. 620 A party performing as a mixer, which has not negotiated the "text/ 621 rex" format, but negotiated a "text/red" or "text/t140" format in a 622 session with a participant SHOULD, if nothing else is specified for 623 the application, format transmitted text to that participant to be 624 suitable to present on a multi-party unaware endpoint as further 625 specified in section Section 13.2. 627 11. Examples 629 This example shows a symbolic flow of packets from a mixer with loss 630 and recovery. A, B and C are sources of RTT. M is the mixer. Pn 631 indicates primary data in source group "n". Rn1 is first redundant 632 generation data and Rn2 is second redundant generation data in source 633 group "n". A1, B1, A2 etc are text chunks (T140blocks) received from 634 the respective sources. X indicates dropped packet between the mixer 635 and a receiver. 637 |----------------| 638 |Seq no 1 | 639 |CC=1 | 640 |CSRC list A | 641 |R12: Empty | 642 |R11: Empty | 643 |P1: A1 | 644 |----------------| 646 Assuming that earlier packets were received in sequence, text A1 is 647 received from packet 1 and assigned to reception area A. 649 |----------------| 650 |Seq no 2 | 651 |CC=3 | 652 |CSRC list C,A | 653 |R12 Empty | 654 |R11:Empty | 655 |P1: C1 | 656 |R22 Empty | 657 |R21: A1 | 658 |P2: Empty | 659 |----------------| 660 Text C1 is received from packet 2 and assigned to reception area C. 662 X----------------| 663 X Seq no 3 | 664 X CC=2 | 665 X CSRC list C,A | 666 X R12: Empty | 667 X R11: C1 | 668 X P1: Empty | 669 X R22: A1 | 670 X R21: Empty | 671 X P2: A2 | 672 X----------------| 673 Packet 3 is assumed to be dropped in network problems 675 X----------------| 676 X Seq no 4 | 677 X CC=3 | 678 X CSRC list C,B,A| 679 X R12: Empty | 680 X R11: Empty | 681 X P1: C2 | 682 X R22: Empty | 683 X R21: Empty | 684 X P2: B1 | 685 X R32: Empty | 686 X R31: A2 | 687 X P3: A3 | 688 X----------------| 689 Packet 4 is assumed to be dropped in network problems 690 X----------------| 691 X Seq no 5 | 692 X CC=3 | 693 X CSRC list C,B,A| 694 X R12: Empty | 695 X R11: C2 | 696 X P1: Empty | 697 X R22: Empty | 698 X R21: B1 | 699 X P2: B2 | 700 X R32: A2 | 701 X R31: A3 | 702 X P3: A4 | 703 X----------------| 704 Packet 5 is assumed to be dropped in network problems 706 |----------------| 707 |Seq no 6 | 708 |CC=3 | 709 |CSRC list C,B,A | 710 | R12: C2 | 711 | R11: Empty | 712 | P1: Empty | 713 | R22: B1 | 714 | R21: B2 | 715 | P2: B3 | 716 | R32: A3 | 717 | R31: A4 | 718 | P3: A5 | 719 |----------------| 720 Packet 6 is received. The latest received sequence number was 2. 721 Recovery is therefore tried for 3,4,5. But there is no coverage 722 for seq no 3. A missing text mark (U'FFFD) is created and 723 appended to the common mixer reception area. 724 For seqno 4, texts C2, B1 and A3 are recovered and appended to 725 their respective reception areas. 726 For seqno 5, texts B2 and A4 are recovered and appended to their 727 respective reception areas. 728 Primary text B3 and A5 are received and appended to their 729 respective reception areas. 731 With only one or two packets lost, there would not be any need to 732 create a missing text marker, and all text would be recovered. 734 It will be a design decision how to present the missing text markers 735 assigned to the mixer as a source. 737 12. Performance considerations 739 This specification allows new text from 16 sources per packet. 740 Packets SHOULD be transmitted with a maximum time interval when there 741 is text to be transmitted (either primary or redundant) . The default 742 maximum transmission interval is 300 ms. It is also RECOMMENDED for 743 the mixer to send a packet as soon as text has been received from a 744 source as long as the maximum number of characters per second 745 indicated by the recipient is not exceeded, and also the number of 746 packets sent per second to a recipient is kept under a number. In 747 order to achieve good performance, a receiver for multi-party calls 748 SHOULD declare a sufficient CPS value in SDP for the number of 749 allowable characters per second. These characteristics provide for 750 smooth flow of text with acceptable latency from at least 32 sources 751 simultaneously. 753 The default maximum rate of reception of real-time text is in RFC 754 4103 [RFC4103] specified to be 30 characters per second. The value 755 MAY be modified in the CPS parameter of the FMTP attribute in the 756 media section for RFC 4103. A mixer combining real-time text from a 757 number of sources may have a higher combined flow of text coming from 758 the sources. Endpoints SHOULD therefore specify a suitable higher 759 value for the CPS parameter, corresponding to its real reception 760 capability. A value for CPS of 150 is the default for the "text/rex" 761 format. See RFC 4103 [RFC4103] for the format and use of the CPS 762 parameter. The same rules apply for the "text/rex" format except for 763 the default value. 765 13. Presentation level considerations 767 ITU-T T.140 [T140] provides the presentation level requirements for 768 the RFC 4103 [RFC4103] transport. T.140 [T140] has functions for 769 erasure and other formatting functions and has the following general 770 statement for the presentation: 772 "The display of text from the members of the conversation should be 773 arranged so that the text from each participant is clearly readable, 774 and its source and the relative timing of entered text is visualized 775 in the display. Mechanisms for looking back in the contents from the 776 current session should be provided. The text should be displayed as 777 soon as it is received." 778 Strict application of T.140 [T140] is of essence for the 779 interoperability of real-time text implementations and to fulfill the 780 intention that the session participants have the same information of 781 the text contents of the conversation without necessarily having the 782 exact same layout of the conversation. This also includes the 783 ability to ignore optional presentation control codes not supported 784 by a receiving application. 786 T.140 [T140] specifies a set of presentation control codes to include 787 in the stream. Some of them are optional. Implementations MUST be 788 able to ignore optional control codes that they do not support. 790 There is no strict "message" concept in real-time text. Line 791 Separator SHALL be used as a separator allowing a part of received 792 text to be grouped in presentation. The characters "CRLF" may be 793 used by other implementations as replacement for Line Separator. The 794 "CRLF" combination SHALL be erased by just one erasing action, just 795 as the Line Separator. Presentation functions are allowed to group 796 text for presentation in smaller groups than the line separators 797 imply and present such groups with source indication together with 798 text groups from other sources (see the following presentation 799 examples). Erasure has no specific limit by any delimiter in the 800 text stream. 802 13.1. Presentation by multi-party aware endpoints 804 A multi-party aware receiving party, presenting real-time text MUST 805 separate text from different sources and present them in separate 806 presentation areas. The receiving party MAY separate presentation of 807 parts of text from a source in readable groups based on other 808 criteria than line separator and merge these groups in the 809 presentation area when it benefits the user to most easily find and 810 read text from the different participants. The criteria MAY e.g. be 811 a received comma, full stop, or other phrase delimiters, or a long 812 pause. 814 When text is received from multiple original sources, the 815 presentation SHOULD provide a view where text is added in multiple 816 places simultaneously. 818 If the presentation presents text from different sources in one 819 common area, the presenting endpoint SHOULD insert text from the 820 local user ended at suitable points merged with received text to 821 indicate the relative timing for when the text groups were completed. 822 In this presentation mode, the receiving endpoint SHALL present the 823 source of the different groups of text. 825 A view of a three-party RTT call in chat style is shown in this 826 example . 828 _________________________________________________ 829 | | | 830 |[Alice] Hi, Alice here. | | 831 | | | 832 |[Bob] Bob as well. | | 833 | | | 834 |[Eve] Hi, this is Eve, calling from Paris. | | 835 | I thought you should be here. | | 836 | | | 837 |[Alice] I am coming on Thursday, my | | 838 | performance is not until Friday morning.| | 839 | | | 840 |[Bob] And I on Wednesday evening. | | 841 | | | 842 |[Alice] Can we meet on Thursday evening? | | 843 | | | 844 |[Eve] Yes, definitely. How about 7pm. | | 845 | at the entrance of the restaurant | | 846 | Le Lion Blanc? | | 847 |[Eve] we can have dinner and then take a walk | | 848 | | | 849 | But I need to be back to | | 850 | the hotel by 11 because I need | | 851 | |-| 852 | I wou |-| 853 |______________________________________________|v| 854 | of course, I underst | 855 |________________________________________________| 857 Figure 2: Example of a three-party RTT call presented in chat style. 859 Other presentation styles than the chat style may be arranged. 861 This figure shows how a coordinated column view MAY be presented. 863 _____________________________________________________________________ 864 | Bob | Eve | Alice | 865 |____________________|______________________|_______________________| 866 | | |I will arrive by TGV. | 867 |My flight is to Orly| |Convenient to the main | 868 | |Hi all, can we plan |station. | 869 | |for the seminar? | | 870 |Eve, will you do | | | 871 |your presentation on| | | 872 |Friday? |Yes, Friday at 10. | | 873 |Fine, wo | |We need to meet befo | 874 |___________________________________________________________________| 876 Figure 3: An example of a coordinated column-view of a three-party 877 session with entries ordered vertically in approximate time-order. 879 13.2. Multi-party mixing for multi-party unaware endpoints 881 When the mixer has indicated multi-party capability in an sdp 882 negotiation, but the multi-party capability negotiation fails with an 883 endpoint, then the mixer SHOULD compose a best-effort presentation of 884 multi-party real-time text in one stream intended to be presented by 885 an endpoint with no multi-party awareness. 887 This presentation format has functional limitations and SHOULD be 888 used only to enable participation in multi-party calls by legacy 889 deployed endpoints. 891 The principles and procedures below do not specify any new protocol 892 elements or behaviors. They are instead composed from the 893 information in ITU-T T.140 [T140] and an ambition to provide a best 894 effort presentation on an endpoint which has functions only for two- 895 party calls. 897 The mixer mixing for multi-party unaware endpoints SHALL compose a 898 simulated limited multi-party RTT view suitable for presentation in 899 one presentation area. The mixer SHALL group text in suitable groups 900 and prepare for presentation of them by inserting a new line betwwen 901 them if the transmitted text did not already end with a new line. A 902 presentable label SHOULD be composed and sent for the source 903 initially in the session and after each source switch. With this 904 procedure the time for source switching is depending on the actions 905 of the users. In order to expedite source switch, a user can for 906 example end its turn with a new line. 908 13.2.1. Actions by the mixer at reception from the call participants 910 When text is received by the mixer from the different participants, 911 the mixer SHALL recover text from redundancy if any packets are lost. 912 The mark for lost text [T140ad1] SHOULD be inserted in the stream if 913 unrecoverable loss appears. Any Unicode BOM characters, possibly 914 used for keep-alive shall be deleted. The time of arrival of text 915 SHALL be stored together with the received text from each source in a 916 queue for transmission to the recipients. 918 13.2.2. Actions by the mixer for transmission to the recipients 920 The following procedure SHOULD be applied for each recipient of 921 multi-part text from the mixer. 923 The text for transmission SHOULD be formatted by the mixer for each 924 receiving user for presentation in one single presentation area. 925 Text received from a participant SHOULD NOT be included in 926 transmission to that participant. When there is text available for 927 transmission from the mixer to a receiving party from more than one 928 participant, the mixer SHOULD switch between transmission of text 929 from the different sources at suitable points in the transmitted 930 stream. 932 When switching source, the mixer SHOULD insert a line separator if 933 the already transmitted text did not end with a new line (line 934 separator or CRLF). A label SHOULD be composed from information in 935 the CNAME and NAME fields in RTCP reports from the participant to 936 have its text transmitted, or from other session information for that 937 user. The label SHOULD be delimited by suitable characters (e.g. '[ 938 ]') and transmitted. The CSRC SHOULD indicate the selected source. 939 Then text from that selected participant SHOULD be transmitted until 940 a new suitable point for switching source is reached. 942 Seeking a suitable point for switching source SHOULD be done when 943 there is older text waiting for transmission from any party than the 944 age of the last transmitted text. Suitable points for switching are: 946 * A completed phrase ended by comma 948 * A completed sentence 950 * A new line (line separator or CRLF) 952 * A long pause (e.g. > 10 seconds) in received text from the 953 currently transmitted source 955 * If text from one participant has been transmitted with text from 956 other sources waiting for transmission for a long time (e.g. > 1 957 minute) and none of the suitable points for switching has 958 occurred, a source switch MAY be forced by the mixer at next word 959 delimiter, and also if even a word delimiter does not occur within 960 a time (e.g. 15 seconds) after the scan for word delimiter 961 started. 963 When switching source, the source which has the oldest text in queue 964 SHOULD be selected to be transmitted. A character display count 965 SHOULD be maintained for the currently transmitted source, starting 966 at zero after the label is transmitted for the currently transmitted 967 source. 969 There SHOULD be a storage for the latest control code for Select 970 Graphic Rendition (SGR) from each source. If there is an SGR code 971 stored for the current source before the source switch is done, a 972 reset of SGR shall be sent by the sequence SGR 0 [009B 0000 006D] 973 after the new line and before the new label during a source switch. 974 See SGR below for an explanation. This transmission does not 975 influence the display count. If there is an SGR code stored for the 976 new source after the source switch, that SGR code SHOULD be 977 transmitted to the recipient before the label. This transmission 978 does not influence the display count. 980 13.2.3. Actions on transmission of text 982 Text from a source sent to the recipient SHOULD increase the display 983 count by one per transmitted character. 985 13.2.4. Actions on transmission of control codes 987 The following control codes specified by T.140 require specific 988 actions. They SHOULD cause specific considerations in the mixer. 989 Note that the codes presented here are expressed in UCS-16, while 990 transmission is made in UTF-8 transform of these codes. 992 BEL 0007 Bell Alert in session, provides for alerting during an 993 active session. The display count SHOULD not be altered. 995 NEW LINE 2028 Line separator. Check and perform a source switch if 996 appropriate. Increase display count by 1. 998 CR LF 000D 000A A supported, but not preferred way of requesting a 999 new line. Check and perform a source switch if appropriate. 1000 Increase display count by 1. 1002 INT ESC 0061 Interrupt (used to initiate mode negotiation 1003 procedure). The display count SHOULD not be altered. 1005 SGR 009B Ps 006D Select graphic rendition. Ps is rendition 1006 parameters specified in ISO 6429. The display count SHOULD not be 1007 altered. The SGR code SHOULD be stored for the current source. 1009 SOS 0098 Start of string, used as a general protocol element 1010 introducer, followed by a maximum 256 bytes string and the ST. 1011 The display count SHOULD not be altered. 1013 ST 009C String terminator, end of SOS string. The display count 1014 SHOULD not be altered. 1016 ESC 001B Escape - used in control strings. The display count SHOULD 1017 not be altered for the complete escape code. 1019 Byte order mark FEFF Zero width, no break space, used for 1020 synchronization and keep-alive. SHOULD be deleted from incoming 1021 streams. Shall be sent first after session establishment to the 1022 recipient. The display count shall not be altered. 1024 Missing text mark FFFD Replacement character, marks place in stream 1025 of possible text loss. SHOULD be inserted by the reception 1026 procedure in case of unrecoverable loss of packets. The display 1027 count SHOULD be increased by one when sent as for any other 1028 character. 1030 SGR If a control code for selecting graphic rendition (SGR), other 1031 than reset of the graphic rendition (SGR 0) is sent to a 1032 recipient, that control code shall also be stored for the source 1033 in the storage for SGR. If a reset graphic rendition (SGR 0) 1034 originated from a source is sent, then the SGR storage for that 1035 source shall be cleared. The display count shall not be 1036 increased. 1038 BS 0008 Back Space, intended to erase the last entered character by 1039 a source. Erasure by backspace cannot always be performed as the 1040 erasing party intended. If an erasing action erases all text up 1041 to the end of the leading label after a source switch, then the 1042 mixer must not transmit more backspaces. Instead it is 1043 RECOMMENDED that a letter "X" is inserted in the text stream for 1044 each backspace as an indication of the intent to erase more. A 1045 new line is usually coded by a Line Separator, but the character 1046 combination "CRLF" MAY be used instead. Erasure of a new line is 1047 in both cases done by just one erasing action (Backspace). If the 1048 display count has a positive value it is decreased by one when the 1049 BS is sent. If the display count is at zero, it is not altered. 1051 13.2.5. Packet transmission 1053 A mixer transmitting to a multi-party unaware terminal SHOULD send 1054 primary data only from one source per packet. The SSRC SHOULD be the 1055 SSRC of the mixer. The CSRC list SHOULD contain one member and be 1056 the SSRC of the source of the primary data. 1058 13.2.6. Functional limitations 1060 When a multi-party unaware endpoint presents a conversation in one 1061 display area in a chat style, it inserts source indications for 1062 remote text and local user text as they are merged in completed text 1063 groups. When an endpoint using this layout receives and presents 1064 text mixed for multi-party unaware endpoints, there will be two 1065 levels of source indicators for the received text; one generated by 1066 the mixer and inserted in a label after each source switch, and 1067 another generated by the receiving endpoint and inserted after each 1068 switch between local and remote source in the presentation area. 1069 This will waste display space and look inconsistent to the reader. 1071 New text can be presented only from one source at a time. Switch of 1072 source to be presented takes place at suitable places in the text, 1073 such as end of phrase, end of sentence, line separator and 1074 inactivity. Therefore the time to switch to present waiting text 1075 from other sources may become long and will vary and depend on the 1076 actions of the currently presented source. 1078 Erasure can only be done up to the latest source switch. If a user 1079 tries to erase more text, the erasing actions will be presented as 1080 letter X after the label. 1082 These facts makes it strongly RECOMMENDED to implement multi-party 1083 awareness in RTT endpoints. The use of the mixing method for multi- 1084 party-unaware endpoints should be left for use with endpoints which 1085 are impossible to upgrade to become multi-party aware. 1087 13.2.7. Example views of presentation on multi-party unaware endpoints 1089 The following pictures are examples of the view on a participant's 1090 display for the multi-party-unaware case. 1092 _________________________________________________ 1093 | Conference | Alice | 1094 |________________________|_________________________| 1095 | |I will arrive by TGV. | 1096 |[Bob]:My flight is to |Convenient to the main | 1097 |Orly. |station. | 1098 |[Eve]:Hi all, can we | | 1099 |plan for the seminar. | | 1100 | | | 1101 |[Bob]:Eve, will you do | | 1102 |your presentation on | | 1103 |Friday? | | 1104 |[Eve]:Yes, Friday at 10.| | 1105 |[Bob]: Fine, wo |We need to meet befo | 1106 |________________________|_________________________| 1108 Figure 4: Alice who has a conference-unaware client is receiving the 1109 multi-party real-time text in a single-stream. This figure shows how 1110 a coordinated column view MAY be presented on Alice's device. 1112 _________________________________________________ 1113 | |^| 1114 |[Alice] Hi, Alice here. | | 1115 | | | 1116 |[mix][Bob] Bob as well. | | 1117 | | | 1118 |[Eve] Hi, this is Eve, calling from Paris | | 1119 | I thought you should be here. | | 1120 | | | 1121 |[Alice] I am coming on Thursday, my | | 1122 | performance is not until Friday morning.| | 1123 | | | 1124 |[mix][Bob] And I on Wednesday evening. | | 1125 | | | 1126 |[Eve] we can have dinner and then walk | | 1127 | | | 1128 |[Eve] But I need to be back to | | 1129 | the hotel by 11 because I need |-| 1130 | |-| 1131 |______________________________________________|v| 1132 | of course, I underst | 1133 |________________________________________________| 1135 Figure 5: An example of a view of the multi-party unaware 1136 presentation in chat style. Alice is the local user. 1138 14. Gateway Considerations 1140 Multi-party RTT sessions may involve gateways of different kinds. 1141 Gateways involved in setting up sessions SHALL correctly reflect the 1142 multi-party capability or unawareness of the combination of the 1143 gateway and the remote endpoint beyond the gateway. 1145 One case that may occur is a gateway to PSTN for communication with 1146 textphones (e.g. TTYs). Textphones are limited devices with no 1147 multi-party awareness, and it SHOULD therefore be suitable for the 1148 gateway to not indicate multi-party awareness for that case. Another 1149 solution is that the gateway indicates multi-party capability towards 1150 the mixer, and includes the multi-party mixer function for multi- 1151 party unaware endpoints itself. This solution makes it possible to 1152 make adaptations for the functional limitations of the textphone 1153 (TTY). 1155 Gateway operation to real-time text in WebRTC may also be required. 1156 In WebRTC, RTT is specified in draft-ietf-mmusic-t140-usage-data- 1157 channel[I-D.ietf-mmusic-t140-usage-data-channel]. EDITOR NOTE ----- 1158 more about this is needed------------ 1160 15. Updates to RFC 4102 and RFC 4103 1162 The document updates RFC 4102[RFC4102] and RFC 4103[RFC4103] by 1163 introducing an extended packet format 'text/rex' for the multi-party 1164 mixing case and more strict rules for the use of redundancy, and 1165 population of the CSRC list in the packets. Implications for the 1166 CSRC list use from RFC 2198[RFC2198] are hereby not in effect. 1168 16. Congestion considerations 1170 The congestion considerations and recommended actions from RFC 4103 1171 [RFC4103] are valid also in multi-party situations. 1173 17. Acknowledgements 1175 James Hamlin for format input. 1177 18. IANA Considerations 1179 The IANA is requested to register the media type registration "text/ 1180 rex" as specified in Section 9. The media type is also requested to 1181 be added to the IANA registry for "RTP Payload Format Media Types" 1182 . 1184 19. Security Considerations 1186 The RTP-mixer model requires the mixer to be allowed to decrypt, pack 1187 and encrypt secured text from the conference participants. Therefore 1188 the mixer needs to be trusted. This is similar to the situation for 1189 central mixers of audio and video. 1191 The requirement to transfer information about the user in RTCP 1192 reports in SDES, CNAME and NAME fields for creation of labels may 1193 have privacy concerns as already stated in RFC 3550 [RFC3550], and 1194 may be restricted of privacy reasons. The receiving user will then 1195 get a more symbolic label for the source. 1197 20. Change history 1199 20.1. Changes to draft-ietf-avtcore-multi-party-rtt-mix-01 1201 2,5,6 More efficient format text/rex introduced and attribute a=rtt- 1202 mix deleted. 1204 3. Brief about use of OSRTP for security included- More needed. 1206 4. Brief motivation for the solution and why not rtp-translator is 1207 used added to intro. 1209 7. More limitations for the multi-party unaware mixing method 1210 inserted. 1212 8. Updates to RFC 4102 and 4103 more clearly expressed. 1214 9. Gateway to WebRTC started. More needed. 1216 20.2. Changes from draft-hellstrom-avtcore-multi-party-rtt-source-03 to 1217 draft-ietf-avtcore-multi-party-rtt-mix-00 1219 Changed file name to draft-ietf-avtcore-multi-party-rtt-mix-00 1221 Replaced CDATA in IANA registration table with better coding. 1223 Converted to xml2rfc version 3. 1225 20.3. Changes from draft-hellstrom-avtcore-multi-party-rtt-source-02 to 1226 -03 1228 Changed company and e-mail of the author. 1230 Changed title to "RTP-mixer formatting of multi-party Real-time text" 1231 to better match contents. 1233 Check and modification where needed of use of RFC 2119 words SHALL 1234 etc. 1236 More about the CC value in sections on transmitters and receivers so 1237 that 1-to-1 sessions do not use the mixer format. 1239 Enhanced section on presentation for multi-party-unaware endpoints 1241 A paragraph recommending CPS=150 inserted in the performance section. 1243 20.4. Changes from draft-hellstrom-avtcore-multi-party-rtt-source-01 to 1244 -02 1246 In Abstract and 1. Introduction: Introduced wording about regulatory 1247 requirements. 1249 In section 5: The transmission interval is decreased to 100 ms when 1250 there is text from more than one source to transmit. 1252 In section 11 about sdp negotiation, a SHOULD-requirement is 1253 introduced that the mixer should make a mix for multi-party unaware 1254 endpoints if the negotiation is not successful. And a reference to a 1255 later chapter about it. 1257 The presentation considerations chapter 14 is extended with more 1258 information about presentation on multi-party aware endpoints, and a 1259 new section on the multi-party unaware mixing with low functionality 1260 but SHOULD a be implemented in mixers. Presentation examples are 1261 added. 1263 A short chapter 15 on gateway considerations is introduced. 1265 Clarification about the text/t140 format included in chapter 10. 1267 This sentence added to the chapter 10 about use without redundancy. 1268 "The text/red format SHOULD be used unless some other protection 1269 against packet loss is utilized, for example a reliable network or 1270 transport." 1272 Note about deviation from RFC 2198 added in chapter 4. 1274 In chapter 9. "Use with SIP centralized conferencing framework" the 1275 following note is inserted: Note: The CSRC-list in an RTP packet only 1276 includes participants who's text is included in one or more text 1277 blocks. It is not the same as the list of participants in a 1278 conference. With audio and video media, the CSRC-list would often 1279 contain all participants who are not muted whereas text participants 1280 that don't type are completely silent and so don't show up in RTP 1281 packet CSRC-lists. 1283 20.5. Changes from draft-hellstrom-avtcore-multi-party-rtt-source-00 to 1284 -01 1286 Editorial cleanup. 1288 Changed capability indication from fmtp-parameter to sdp attribute 1289 "rtt-mix". 1291 Swapped order of redundancy elements in the example to match reality. 1293 Increased the SDP negotiation section 1295 21. References 1297 21.1. Normative References 1299 [I-D.ietf-mmusic-t140-usage-data-channel] 1300 Holmberg, C. and G. Hellstrom, "T.140 Real-time Text 1301 Conversation over WebRTC Data Channels", Work in Progress, 1302 Internet-Draft, draft-ietf-mmusic-t140-usage-data-channel- 1303 14, 10 April 2020, . 1306 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1307 Requirement Levels", BCP 14, RFC 2119, 1308 DOI 10.17487/RFC2119, March 1997, 1309 . 1311 [RFC2198] Perkins, C., Kouvelas, I., Hodson, O., Hardman, V., 1312 Handley, M., Bolot, J.C., Vega-Garcia, A., and S. Fosse- 1313 Parisis, "RTP Payload for Redundant Audio Data", RFC 2198, 1314 DOI 10.17487/RFC2198, September 1997, 1315 . 1317 [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. 1318 Jacobson, "RTP: A Transport Protocol for Real-Time 1319 Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, 1320 July 2003, . 1322 [RFC4102] Jones, P., "Registration of the text/red MIME Sub-Type", 1323 RFC 4102, DOI 10.17487/RFC4102, June 2005, 1324 . 1326 [RFC4103] Hellstrom, G. and P. Jones, "RTP Payload for Text 1327 Conversation", RFC 4103, DOI 10.17487/RFC4103, June 2005, 1328 . 1330 [RFC4855] Casner, S., "Media Type Registration of RTP Payload 1331 Formats", RFC 4855, DOI 10.17487/RFC4855, February 2007, 1332 . 1334 [RFC6263] Marjou, X. and A. Sollaud, "Application Mechanism for 1335 Keeping Alive the NAT Mappings Associated with RTP / RTP 1336 Control Protocol (RTCP) Flows", RFC 6263, 1337 DOI 10.17487/RFC6263, June 2011, 1338 . 1340 [RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type 1341 Specifications and Registration Procedures", BCP 13, 1342 RFC 6838, DOI 10.17487/RFC6838, January 2013, 1343 . 1345 [RFC8643] Johnston, A., Aboba, B., Hutton, A., Jesske, R., and T. 1346 Stach, "An Opportunistic Approach for Secure Real-time 1347 Transport Protocol (OSRTP)", RFC 8643, 1348 DOI 10.17487/RFC8643, August 2019, 1349 . 1351 [T140] ITU-T, "Recommendation ITU-T T.140 (02/1998), Protocol for 1352 multimedia application text conversation", February 1998, 1353 . 1355 [T140ad1] ITU-T, "Recommendation ITU-T.140 Addendum 1 - (02/2000), 1356 Protocol for multimedia application text conversation", 1357 February 2000, 1358 . 1360 21.2. Informative References 1362 [RFC4353] Rosenberg, J., "A Framework for Conferencing with the 1363 Session Initiation Protocol (SIP)", RFC 4353, 1364 DOI 10.17487/RFC4353, February 2006, 1365 . 1367 [RFC4575] Rosenberg, J., Schulzrinne, H., and O. Levin, Ed., "A 1368 Session Initiation Protocol (SIP) Event Package for 1369 Conference State", RFC 4575, DOI 10.17487/RFC4575, August 1370 2006, . 1372 [RFC4579] Johnston, A. and O. Levin, "Session Initiation Protocol 1373 (SIP) Call Control - Conferencing for User Agents", 1374 BCP 119, RFC 4579, DOI 10.17487/RFC4579, August 2006, 1375 . 1377 Author's Address 1379 Gunnar Hellstrom 1380 Gunnar Hellstrom Accessible Communication 1381 Esplanaden 30 1382 SE-13670 Vendelso 1383 Sweden 1385 Email: gunnar.hellstrom@ghaccess.se