idnits 2.17.1 draft-ietf-payload-tsvcis-03.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 : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (September 27, 2019) is 1666 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) ** Obsolete normative reference: RFC 4566 (Obsoleted by RFC 8866) -- Possible downref: Non-RFC (?) normative reference: ref. 'NRLVDR' -- Possible downref: Non-RFC (?) normative reference: ref. 'MELP' -- Possible downref: Non-RFC (?) normative reference: ref. 'MELPE' -- Possible downref: Non-RFC (?) normative reference: ref. 'SCIP210' Summary: 1 error (**), 0 flaws (~~), 1 warning (==), 5 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Payload Working Group Victor Demjanenko 3 Internet-Draft John Punaro 4 Intended Status: Standards Track David Satterlee 5 VOCAL Technologies, Ltd. 6 Expires: March 30, 2020 September 27, 2019 8 RTP Payload Format for TSVCIS Codec 9 draft-ietf-payload-tsvcis-03 11 Status of This Memo 13 Copyright (c) 2019 IETF Trust and the persons identified as the 14 document authors. All rights reserved. 16 This Internet-Draft is submitted in full conformance with the 17 provisions of BCP 78 and BCP 79. 19 This document is subject to BCP 78 and the IETF Trust's Legal 20 Provisions Relating to IETF Documents 21 (http://trustee.ietf.org/license-info) in effect on the date of 22 publication of this document. Please review these documents 23 carefully, as they describe your rights and restrictions with respect 24 to this document. Code Components extracted from this document must 25 include Simplified BSD License text as described in Section 4.e of 26 the Trust Legal Provisions and are provided without warranty as 27 described in the Simplified BSD License. 29 Internet-Drafts are working documents of the Internet Engineering 30 Task Force (IETF). Note that other groups may also distribute 31 working documents as Internet-Drafts. The list of current Internet- 32 Drafts is at http://datatracker.ietf.org/drafts/current/. 34 Internet-Drafts are draft documents valid for a maximum of six months 35 and may be updated, replaced, or obsoleted by other documents at any 36 time. It is inappropriate to use Internet-Drafts as reference 37 material or to cite them other than as "work in progress." 39 Abstract 41 This document describes the RTP payload format for the Tactical 42 Secure Voice Cryptographic Interoperability Specification (TSVCIS) 43 speech coder. TSVCIS is a scalable narrowband voice coder supporting 44 varying encoder data rates and fallbacks. It is implemented as an 45 augmentation to the Mixed Excitation Linear Prediction Enhanced 46 (MELPe) speech coder by conveying additional speech coder parameters 47 for enhancing voice quality. TSVCIS augmented speech data is 48 processed in conjunction with its temporal matched MELP 2400 speech 49 data. The RTP packetization of TSVCIS and MELPe speech coder data is 50 described in detail. 52 Table of Contents 54 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2 55 1.1. Conventions . . . . . . . . . . . . . . . . . . . . . . . 3 56 2. Background . . . . . . . . . . . . . . . . . . . . . . . . . . 3 57 3. Payload Format . . . . . . . . . . . . . . . . . . . . . . . . 4 58 3.1. MELPe Bitstream Definitions . . . . . . . . . . . . . . . 5 59 3.1.1. 2400 bps Bitstream Structure . . . . . . . . . . . . . 6 60 3.1.2. 1200 bps Bitstream Structure . . . . . . . . . . . . . 6 61 3.1.3. 600 bps Bitstream Structure . . . . . . . . . . . . . 7 62 3.1.4. Comfort Noise Bitstream Definition . . . . . . . . . . 8 63 3.2. TSVCIS Bitstream Definition . . . . . . . . . . . . . . . 8 64 3.3. Multiple TSVCIS Frames in an RTP Packet . . . . . . . . . 10 65 3.4. Congestion Control Considerations . . . . . . . . . . . . 11 66 4. Payload Format Parameters . . . . . . . . . . . . . . . . . . 11 67 4.1. Media Type Definitions . . . . . . . . . . . . . . . . . . 11 68 4.2. Mapping to SDP . . . . . . . . . . . . . . . . . . . . . . 13 69 4.3. Declarative SDP Considerations . . . . . . . . . . . . . . 15 70 4.4. Offer/Answer SDP Considerations . . . . . . . . . . . . . 15 71 5. Discontinuous Transmissions . . . . . . . . . . . . . . . . . 16 72 6. Packet Loss Concealment . . . . . . . . . . . . . . . . . . . 16 73 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 74 8. Security Considerations . . . . . . . . . . . . . . . . . . . 16 75 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 17 76 10.1. Normative References . . . . . . . . . . . . . . . . . . 17 77 10.2. Informative References . . . . . . . . . . . . . . . . . 19 78 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 19 80 1. Introduction 82 This document describes how compressed Tactical Secure Voice 83 Cryptographic Interoperability Specification (TSVCIS) speech as 84 produced by the TSVCIS codec [TSVCIS] [NRLVDR] may be formatted for 85 use as an RTP payload. The TSVCIS speech coder (or TSVCIS speech 86 aware communications equipment on any intervening transport link) may 87 adjust to restricted bandwidth conditions by reducing the amount of 88 augmented speech data and relying on the underlying MELPe speech 89 coder for the most constrained bandwidth links. 91 Details are provided for packetizing the TSVCIS augmented speech data 92 along with MELPe 2400 bps speech parameters in a RTP packet. The 93 sender may send one or more codec data frames per packet, depending 94 on the application scenario or based on transport network conditions, 95 bandwidth restrictions, delay requirements, and packet loss 96 tolerance. 98 1.1. Conventions 100 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 101 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 102 "OPTIONAL" in this document are to be interpreted as described in 103 BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all 104 capitals, as shown here. 106 Best current practices for writing an RTP payload format 107 specification were followed [RFC2736]. 109 2. Background 111 The MELP speech coder was developed by the US military as an upgrade 112 from the LPC-based CELP standard vocoder for low-bitrate 113 communications [MELP]. ("LPC" stands for "Linear-Predictive Coding", 114 and "CELP" stands for "Code-Excited Linear Prediction".) MELP was 115 further enhanced and subsequently adopted by NATO as MELPe for use by 116 its members and Partnership for Peace countries for military and 117 other governmental communications as international NATO Standard 118 STANAG 4591 [MELPE]. 120 The Tactical Secure Voice Cryptographic Interoperability 121 Specification (TSVCIS) is a specification written by the Tactical 122 Secure Voice Working Group (TSVWG) for enabling all modern tactical 123 secure voice devices to be interoperable across the Department of 124 Defense [TSVCIS]. One of the most important aspects is that the 125 voice modes defined in TSVCIS are based on specific fixed rates of 126 Naval Research Lab's (NRL's) Variable Date Rate (VDR) Vocoder which 127 uses the MELPe standard as its base [NRLVDR]. A complete TSVCIS 128 speech frame consists of MELPe speech parameters and corresponding 129 TSVCIS augmented speech data. 131 In addition to the augmented speech data, the TSVCIS specification 132 identifies which speech coder and framing bits are to be encrypted, 133 and how they are protected by forward error correction (FEC) 134 techniques (using block codes). At the RTP transport layer, only the 135 speech coder related bits need to be considered and are conveyed in 136 unencrypted form. In most IP-based network deployments, standard 137 link encryption methods (SRTP, VPNs, FIPS 140 link encryptors or Type 138 1 Ethernet encryptors) would be used to secure the RTP speech 139 contents. Further, it is desirable to support the highest voice 140 quality between endpoints which is only possible without the overhead 141 of FEC. 143 TSVCIS augmented speech data is derived from the signal processing 144 and data already performed by the MELPe speech coder. For the 145 purposes of this specification, only the general parameter nature of 146 TSVCIS will be characterized. Depending on the bandwidth available 147 (and FEC requirements), a varying number of TSVCIS specific speech 148 coder parameters need to be transported. These are first byte-packed 149 and then conveyed from encoder to decoder. 151 Byte packing of TSVCIS speech data into packed parameters is 152 processed as per the following example: 154 Three-bit field: bits A, B, and C (A is MSB, C is LSB) 155 Five-bit field: bits D, E, F, G, and H (D is MSB, H is LSB) 157 MSB LSB 158 0 1 2 3 4 5 6 7 159 +------+------+------+------+------+------+------+------+ 160 | H | G | F | E | D | C | B | A | 161 +------+------+------+------+------+------+------+------+ 163 This packing method places the three-bit field "first" in the lowest 164 bits followed by the next five-bit field. Parameters may be split 165 between octets with the most significant bits in the earlier octet. 166 Any unfilled bits in the last octet MUST be filled with zero. 168 In order to accommodate a varying amount of TSVCIS augmented speech 169 data, it is only necessary to specify the number of octets containing 170 the packed TSVCIS parameters. The encoding to do so is presented in 171 Section 3.2. TSVCIS specifically uses the NRL VDR in two 172 configurations using 15 and 35 packed octet parameters [TSVCIS]. 174 3. Payload Format 176 The TSVCIS codec augments the standard MELP 2400, 1200 and 600 177 bitrates and hence uses 22.5, 67.5, or 90 ms frames with a sampling 178 rate clock of 8 kHz, so the RTP timestamp MUST be in units of 1/8000 179 of a second. 181 The RTP payload for TSVCIS has the format shown in Figure 1. No 182 additional header specific to this payload format is needed. This 183 format is intended for situations where the sender and the receiver 184 send one or more codec data frames per packet. 186 0 1 2 3 187 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 188 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 189 | RTP Header | 190 +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ 191 | | 192 + one or more frames of TSVCIS | 193 | | 194 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 196 Figure 1: Packet Format Diagram 198 The RTP header of the packetized encoded TSVCIS speech has the 199 expected values as described in [RFC3550]. The usage of the M bit 200 SHOULD be as specified in the applicable RTP profile -- for example, 201 [RFC3551], where [RFC3551] specifies that if the sender does not 202 suppress silence (i.e., sends a frame on every frame interval), the 203 M bit will always be zero. When more than one codec data frame is 204 present in a single RTP packet, the timestamp is, as always, that of 205 the oldest data frame represented in the RTP packet. 207 The assignment of an RTP payload type for this new packet format is 208 outside the scope of this document and will not be specified here. It 209 is expected that the RTP profile for a particular class of 210 applications will assign a payload type for this encoding, or if that 211 is not done, then a payload type in the dynamic range shall be chosen 212 by the sender. 214 3.1. MELPe Bitstream Definitions 216 The TCVCIS speech coder includes all three MELPe coder rates used as 217 base speech parameters or as speech coders for bandwidth restricted 218 links. RTP packetization of MELPe follows RFC 8130 and is repeated 219 here for all three MELPe rates [RFC8130] with its recommendations now 220 regarded as requirements. The bits previously labeled as RSVA, RSVB, 221 and RSVC in RFC 8130 SHOULD be filled with rate coding, CODA, CODB, 222 and CODC, as shown in Table 1 (compatible with Table 7 in Section 3.3 223 of [RFC8130]). 225 +-------------------+------+------+------+------+ 226 | Coder Bitrate | CODA | CODB | CODC |Length| 227 +-------------------+------+------+------+------+ 228 | 2400 bps | 0 | 0 | N/A | 7 | 229 +-------------------+------+------+------+------+ 230 | 1200 bps | 1 | 0 | 0 | 11 | 231 +-------------------+------+------+------+------+ 232 | 600 bps | 0 | 1 | N/A | 7 | 233 +-------------------+------+------+------+------+ 234 | Comfort Noise | 1 | 0 | 1 | 2 | 235 +-------------------+------+------+------+------+ 236 | TSVCIS data | 1 | 1 | N/A | var. | 237 +-------------------+------+------+------+------+ 239 Table 1: TSVCIS/MELPe Frame Bitrate Indicators and Frame Length 241 The total number of bits used to describe one MELPe frame of 2400 bps 242 speech is 54, which fits in 7 octets (with two rate code bits). For 243 MELPe 1200 bps speech, the total number of bits used is 81, which 244 fits in 11 octets (with three rate code bits and four unused bits). 245 For MELPe 600 bps speech, the total number of bits used is 54, which 246 fits in 7 octets (with two rate code bits). The comfort noise frame 247 consists of 13 bits, which fits in 2 octets (with three rate code 248 bits). TSVCIS packed parameters will use the last code combination 249 in a trailing byte as discussed in Section 3.2. 251 It should be noted that CODB for both the 2400 and 600 bps modes MAY 252 deviate from the values in Table 1 when bit 55 is used as an end-to- 253 end framing bit. Frame decoding would remain distinct as CODA being 254 zero on its own would indicate a 7-byte frame for either rate and the 255 use of 600 bps speech coding could be deduced from the RTP timestamp 256 (and anticipated by the SDP negotiations). 258 3.1.1. 2400 bps Bitstream Structure 260 The 2400 bps MELPe RTP payload is constructed as per Figure 2. Note 261 that CODA MUST be filled with 0 and CODB SHOULD be filled with 0 as 262 per Section 3.1. CODB MAY contain an end-to-end framing bit if 263 required by the endpoints. 265 MSB LSB 266 0 1 2 3 4 5 6 7 267 +------+------+------+------+------+------+------+------+ 268 | B_08 | B_07 | B_06 | B_05 | B_04 | B_03 | B_02 | B_01 | 269 +------+------+------+------+------+------+------+------+ 270 | B_16 | B_15 | B_14 | B_13 | B_12 | B_11 | B_10 | B_09 | 271 +------+------+------+------+------+------+------+------+ 272 | B_24 | B_23 | B_22 | B_21 | B_20 | B_19 | B_18 | B_17 | 273 +------+------+------+------+------+------+------+------+ 274 | B_32 | B_31 | B_30 | B_29 | B_28 | B_27 | B_26 | B_25 | 275 +------+------+------+------+------+------+------+------+ 276 | B_40 | B_39 | B_38 | B_37 | B_36 | B_35 | B_34 | B_33 | 277 +------+------+------+------+------+------+------+------+ 278 | B_48 | B_47 | B_46 | B_45 | B_44 | B_43 | B_42 | B_41 | 279 +------+------+------+------+------+------+------+------+ 280 | CODA | CODB | B_54 | B_53 | B_52 | B_51 | B_50 | B_49 | 281 +------+------+------+------+------+------+------+------+ 283 Figure 2: Packed MELPe 2400 bps Payload Octets 285 3.1.2. 1200 bps Bitstream Structure 286 The 1200 bps MELPe RTP payload is constructed as per Figure 3. Note 287 that CODA, CODB, and CODC MUST be filled with 1, 0, and 0 288 respectively as per Section 3.1. RSV0 MUST be coded as 0. 290 MSB LSB 291 0 1 2 3 4 5 6 7 292 +------+------+------+------+------+------+------+------+ 293 | B_08 | B_07 | B_06 | B_05 | B_04 | B_03 | B_02 | B_01 | 294 +------+------+------+------+------+------+------+------+ 295 | B_16 | B_15 | B_14 | B_13 | B_12 | B_11 | B_10 | B_09 | 296 +------+------+------+------+------+------+------+------+ 297 | B_24 | B_23 | B_22 | B_21 | B_20 | B_19 | B_18 | B_17 | 298 +------+------+------+------+------+------+------+------+ 299 | B_32 | B_31 | B_30 | B_29 | B_28 | B_27 | B_26 | B_25 | 300 +------+------+------+------+------+------+------+------+ 301 | B_40 | B_39 | B_38 | B_37 | B_36 | B_35 | B_34 | B_33 | 302 +------+------+------+------+------+------+------+------+ 303 | B_48 | B_47 | B_46 | B_45 | B_44 | B_43 | B_42 | B_41 | 304 +------+------+------+------+------+------+------+------+ 305 | B_56 | B_55 | B_54 | B_53 | B_52 | B_51 | B_50 | B_49 | 306 +------+------+------+------+------+------+------+------+ 307 | B_64 | B_63 | B_62 | B_61 | B_60 | B_59 | B_58 | B_57 | 308 +------+------+------+------+------+------+------+------+ 309 | B_72 | B_71 | B_70 | B_69 | B_68 | B_67 | B_66 | B_65 | 310 +------+------+------+------+------+------+------+------+ 311 | B_80 | B_79 | B_78 | B_77 | B_76 | B_75 | B_74 | B_73 | 312 +------+------+------+------+------+------+------+------+ 313 | CODA | CODB | CODC | RSV0 | RSV0 | RSV0 | RSV0 | B_81 | 314 +------+------+------+------+------+------+------+------+ 316 Figure 3: Packed MELPe 1200 bps Payload Octets 318 3.1.3. 600 bps Bitstream Structure 320 The 600 bps MELPe RTP payload is constructed as per Figure 4. Note 321 CODA MUST be filled with 0 and CODB SHOULD be filled with 1 as per 322 Section 3.1. CODB MAY contain an end-to-end framing bit if required 323 by the endpoints. 325 MSB LSB 326 0 1 2 3 4 5 6 7 327 +------+------+------+------+------+------+------+------+ 328 | B_08 | B_07 | B_06 | B_05 | B_04 | B_03 | B_02 | B_01 | 329 +------+------+------+------+------+------+------+------+ 330 | B_16 | B_15 | B_14 | B_13 | B_12 | B_11 | B_10 | B_09 | 331 +------+------+------+------+------+------+------+------+ 332 | B_24 | B_23 | B_22 | B_21 | B_20 | B_19 | B_18 | B_17 | 333 +------+------+------+------+------+------+------+------+ 334 | B_32 | B_31 | B_30 | B_29 | B_28 | B_27 | B_26 | B_25 | 335 +------+------+------+------+------+------+------+------+ 336 | B_40 | B_39 | B_38 | B_37 | B_36 | B_35 | B_34 | B_33 | 337 +------+------+------+------+------+------+------+------+ 338 | B_48 | B_47 | B_46 | B_45 | B_44 | B_43 | B_42 | B_41 | 339 +------+------+------+------+------+------+------+------+ 340 | CODA | CODB | B_54 | B_53 | B_52 | B_51 | B_50 | B_49 | 341 +------+------+------+------+------+------+------+------+ 343 Figure 4: Packed MELPe 600 bps Payload Octets 345 3.1.4. Comfort Noise Bitstream Definition 347 The comfort noise MELPe RTP payload is constructed as per Figure 5. 348 Note that CODA, CODB, and CODC MUST be filled with 1, 0, and 1 349 respectively as per Section 3.1. 351 MSB LSB 352 0 1 2 3 4 5 6 7 353 +------+------+------+------+------+------+------+------+ 354 | B_08 | B_07 | B_06 | B_05 | B_04 | B_03 | B_02 | B_01 | 355 +------+------+------+------+------+------+------+------+ 356 | CODA | CODB | CODC | B_13 | B_12 | B_11 | B_10 | B_09 | 357 +------+------+------+------+------+------+------+------+ 359 Figure 5: Packed MELPe Comfort Noise Payload Octets 361 3.2. TSVCIS Bitstream Definition 363 The TSVCIS augmented speech data as packed parameters MUST be placed 364 immediately after a corresponding MELPe 2400 bps payload in the same 365 RTP packet. The packed parameters are counted in octets (TC). In 366 the preferred placement, shown in Figure 6, a single trailing octet 367 SHALL be appended to include a two-bit rate code, CODA and CODB, 368 (both bits set to one) and a six-bit modified count (MTC). The 369 special modified count value of all ones (representing a MTC value of 370 63) SHALL NOT be used for this format as it is used as the indicator 371 for the alternate packing format shown next. In a standard 372 implementation, the TSVCIS speech coder uses a minimum of 15 octets 373 for parameters in octet packed form. The modified count (MTC) MUST 374 be reduced by 15 from the full octet count (TC). Computed MTC = TC- 375 15. This accommodates a maximum of 77 parameter octets (maximum 376 value of MTC is 62, 77 is the sum of 62+15). 378 MSB LSB 379 0 1 2 3 4 5 6 7 380 +------+------+------+------+------+------+------+------+ 381 1 | T008 | T007 | T006 | T005 | T004 | T003 | T002 | T001 | 382 +------+------+------+------+------+------+------+------+ 383 2 | T016 | T015 | T014 | T013 | T012 | T011 | T010 | T009 | 384 +------+------+------+------+------+------+------+------+ 385 3 | T024 | T023 | T022 | T021 | T020 | T019 | T018 | T017 | 386 +------+------+------+------+------+------+------+------+ 387 4 | T032 | T031 | T030 | T029 | T028 | T027 | T026 | T025 | 388 +------+------+------+------+------+------+------+------+ 389 5 | T040 | T039 | T038 | T037 | T036 | T035 | T034 | T033 | 390 +------+------+------+------+------+------+------+------+ 391 6 | T048 | T047 | T046 | T045 | T044 | T043 | T042 | T041 | 392 +------+------+------+------+------+------+------+------+ 393 7 | TO56 | TO55 | T054 | T053 | T052 | T051 | T050 | T049 | 394 +------+------+------+------+------+------+------+------+ 395 8 | T064 | T063 | T062 | T061 | T060 | T059 | T058 | T057 | 396 +------+------+------+------+------+------+------+------+ 397 9 | T072 | T071 | T070 | T069 | T068 | T067 | T066 | T065 | 398 +------+------+------+------+------+------+------+------+ 399 10 | T080 | T079 | T078 | T077 | T076 | T075 | T074 | T073 | 400 +------+------+------+------+------+------+------+------+ 401 11 | T088 | T087 | T086 | T085 | T084 | T083 | T082 | T081 | 402 +------+------+------+------+------+------+------+------+ 403 12 | TO96 | TO95 | T094 | T093 | T092 | T091 | T090 | T089 | 404 +------+------+------+------+------+------+------+------+ 405 13 | T104 | T103 | T102 | T101 | T100 | T099 | T098 | T097 | 406 +------+------+------+------+------+------+------+------+ 407 14 | T112 | T111 | T110 | T109 | T108 | T107 | T106 | T105 | 408 +------+------+------+------+------+------+------+------+ 409 15 | T120 | T119 | T118 | T117 | T116 | T115 | T114 | T113 | 410 +------+------+------+------+------+------+------+------+ 411 | . . . . | 412 +------+------+------+------+------+------+------+------+ 413 TC+1 | CODA | CODB | modified octet count | 414 +------+------+------+------+------+------+------+------+ 416 Figure 6: Preferred Packed TSVCIS Payload Octets 418 In order to accommodate all other NRL VDR configurations, an 419 alternate parameter placement MUST use two trailing bytes as shown in 420 Figure 7. The last trailing byte MUST be filled with a two-bit rate 421 code, CODA and CODB, (both bits set to one) and its six-bit count 422 field MUST be filled with ones. The second to last trailing byte 423 MUST contain the parameter count (TC) in octets (a value from 1 and 424 255, inclusive). The value of zero SHALL be considered as reserved. 426 MSB LSB 427 0 1 2 3 4 5 6 7 428 +------+------+------+------+------+------+------+------+ 429 1 | T008 | T007 | T006 | T005 | T004 | T003 | T002 | T001 | 430 +------+------+------+------+------+------+------+------+ 431 2 | T016 | T015 | T014 | T013 | T012 | T011 | T010 | T009 | 432 +------+------+------+------+------+------+------+------+ 433 | . . . . | 434 +------+------+------+------+------+------+------+------+ 435 TC+1 | octet count | 436 +------+------+------+------+------+------+------+------+ 437 TC+2 | CODA | CODB | 1 | 1 | 1 | 1 | 1 | 1 | 438 +------+------+------+------+------+------+------+------+ 440 Figure 7: Length Unrestricted Packed TSVCIS Payload Octets 442 3.3. Multiple TSVCIS Frames in an RTP Packet 444 A TSVCIS RTP packet consists of zero or more TSVCIS coder frames 445 (each consisting of MELPe and TSVCIS coder data) followed by zero or 446 one MELPe comfort noise frame. The presence of a comfort noise frame 447 can be determined by its rate code bits in its last octet. 449 The default packetization interval is one coder frame (22.5, 67.5, or 450 90 ms) according to the coder bitrate (2400, 1200, or 600 bps). For 451 some applications, a longer packetization interval is used to reduce 452 the packet rate. 454 A TSVCIS RTP packet without coder and comfort noise frames MAY be 455 used periodically by an endpoint to indicate connectivity by an 456 otherwise idle receiver. 458 TSVCIS coder frames in a single RTP packet MAY be of different coder 459 bitrates. With the exception for the variable length TSVCIS 460 parameter frames, the coder rate bits in the trailing byte identify 461 the contents and length as per Table 1. 463 It is important to observe that senders have the following additional 464 restrictions: 466 Senders SHOULD NOT include more TSVCIS or MELPe frames in a single 467 RTP packet than will fit in the MTU of the RTP transport protocol. 469 Frames MUST NOT be split between RTP packets. 471 It is RECOMMENDED that the number of frames contained within an RTP 472 packet be consistent with the application. For example, in telephony 473 and other real-time applications where delay is important, then the 474 fewer frames per packet the lower the delay, whereas for bandwidth- 475 constrained links or delay-insensitive streaming messaging 476 applications, more than one frame per packet or many frames per 477 packet would be acceptable. 479 Information describing the number of frames contained in an RTP 480 packet is not transmitted as part of the RTP payload. The way to 481 determine the number of TSVCIS/MELPe frames is to identify each frame 482 type and length thereby counting the total number of octets within 483 the RTP packet. 485 3.4. Congestion Control Considerations 487 The target bitrate of TSVCIS can be adjusted at any point in time, 488 thus allowing congestion management. Furthermore, the amount of 489 encoded speech or audio data encoded in a single packet can be used 490 for congestion control, since the packet rate is inversely 491 proportional to the packet duration. A lower packet transmission 492 rate reduces the amount of header overhead but at the same time 493 increases latency and loss sensitivity, so it ought to be used 494 with care. 496 Since UDP does not provide congestion control, applications that use 497 RTP over UDP SHOULD implement their own congestion control above the 498 UDP layer [RFC8085] and MAY also implement a transport circuit 499 breaker [RFC8083]. Work in the RMCAT working group [RMCAT] describes 500 the interactions and conceptual interfaces necessary between the 501 application components that relate to congestion control, including 502 the RTP layer, the higher-level media codec control layer, and the 503 lower-level transport interface, as well as components dedicated to 504 congestion control functions. 506 4. Payload Format Parameters 508 This RTP payload format is identified using the TSVCIS media subtype, 509 which is registered in accordance with RFC 4855 [RFC4855] and per the 510 media type registration template from RFC 6838 [RFC6838]. 512 4.1. Media Type Definitions 514 Type name: audio 516 Subtype name: TSVCIS 518 Required parameters: N/A 520 Optional parameters: 522 ptime: the recommended length of time (in milliseconds) 523 represented by the media in a packet. It SHALL use the nearest 524 rounded-up ms integer packet duration. For TSVCIS, this 525 corresponds to the following values: 23, 45, 68, 90, 112, 135, 526 156, and 180. Larger values can be used as long as they are 527 properly rounded. See Section 6 of RFC 4566 [RFC4566]. 529 maxptime: the maximum length of time (in milliseconds) that can be 530 encapsulated in a packet. It SHALL use the nearest rounded-up 531 ms integer packet duration. For TSVCIS, this corresponds to 532 the following values: 23, 45, 68, 90, 112, 135, 156, and 180. 533 Larger values can be used as long as they are properly rounded. 534 See Section 6 of RFC 4566 [RFC4566]. 536 bitrate: specifies the MELPe coder bitrates supported. Possible 537 values are a comma-separated list of rates from the following 538 set: 2400, 1200, 600. The modes are listed in order of 539 preference; first is preferred. If "bitrate" is not present, 540 the fixed coder bitrate of 2400 MUST be used. 542 tcmax: specifies the TSVCIS maximum value for TC supported or 543 desired ranging from 1 to 255. If "tcmax" is not present, a 544 default value of 35 is used. 546 [EDITOR NOTE - the value of 35 is suggested based on a 547 preferred 8kbps TSVCIS coder bitrate.] 549 Encoding considerations: This media subtype is framed and binary; see 550 Section 4.8 of RFC 6838 [RFC6838]. 552 Security considerations: Please see Section 8 of RFC XXXX. 554 [EDITOR NOTE - please replace XXXX with the RFC number of this 555 document.] 557 Interoperability considerations: N/A 559 Published specification: [TSVCIS] 561 Applications that use this media type: N/A 563 Fragment identifier considerations: N/A 565 Additional information: 567 Clock Rate (Hz): 8000 568 Channels: 1 570 Deprecated alias names for this type: N/A 572 Magic number(s): N/A 574 File extension(s): N/A 575 Macintosh file type code(s): N/A 577 Person & email address to contact for further information: 579 Victor Demjanenko, Ph.D. 580 VOCAL Technologies, Ltd. 581 520 Lee Entrance, Suite 202 582 Buffalo, NY 14228 583 United States of America 584 Phone: +1 716 688 4675 585 Email: victor.demjanenko@vocal.com 587 Intended usage: COMMON 589 Restrictions on usage: The media subtype depends on RTP framing and 590 hence is only defined for transfer via RTP [RFC3550]. Transport 591 within other framing protocols is not defined at this time. 593 Author: Victor Demjanenko 595 Change controller: IETF Payload working group delegated from the 596 IESG. 598 Provisional registration? (standards tree only): No 600 4.2. Mapping to SDP 602 The mapping of the above-defined payload format media subtype and its 603 parameters SHALL be done according to Section 3 of RFC 4855 604 [RFC4855]. 606 The information carried in the media type specification has a 607 specific mapping to fields in the Session Description Protocol (SDP) 608 [RFC4566], which is commonly used to describe RTP sessions. When SDP 609 is used to specify sessions employing the TSVCIS codec, the mapping 610 is as follows: 612 o The media type ("audio") goes in SDP "m=" as the media name. 614 o The media subtype (payload format name) goes in SDP "a=rtpmap" as 615 the encoding name. 617 o The parameter "bitrate" goes in the SDP "a=fmtp" attribute by 618 copying it as a "bitrate=" string. 620 o The parameter "tcmax" goes in the SDP "a=fmtp" attribute by 621 copying it as a "tcmax=" string. 623 o The parameters "ptime" and "maxptime" go in the SDP "a=ptime" and 624 "a=maxptime" attributes, respectively. 626 When conveying information via SDP, the encoding name SHALL be 627 "TSVCIS" (the same as the media subtype). 629 An example of the media representation in SDP for describing TSVCIS 630 might be: 632 m=audio 49120 RTP/AVP 96 633 a=rtpmap:96 TSVCIS/8000 635 The optional media type parameter "bitrate", when present, MUST be 636 included in the "a=fmtp" attribute in the SDP, expressed as a media 637 type string in the form of a semicolon-separated list of 638 parameter=value pairs. The string "value" can be one or more of 639 2400, 1200, and 600, separated by commas (where each bitrate value 640 indicates the corresponding MELPe coder). An example of the media 641 representation in SDP for describing TSVCIS when all three coder 642 bitrates are supported might be: 644 m=audio 49120 RTP/AVP 96 645 a=rtpmap:96 TSVCIS/8000 646 a=fmtp:96 bitrate=2400,600,1200 648 The optional media type parameter "tcmax", when present, MUST be 649 included in the "a=fmtp" attribute in the SDP, expressed as a media 650 type string in the form of a semicolon-separated list of 651 parameter=value pairs. The string "value" is an integer number in 652 the range of 1 to 255 representing the maximum number of TSVCIS 653 parameter octets supported. An example of the media representation 654 in SDP for describing TSVCIS with a maximum of 101 octets supported 655 is as follows: 657 m=audio 49120 RTP/AVP 96 658 a=rtpmap:96 TSVCIS/8000 659 a=fmtp:96 tcmax=101 661 Parameter "ptime" cannot be used for the purpose of specifying the 662 TSVCIS operating mode, due to the fact that for certain values it 663 will be impossible to distinguish which mode is about to be used 664 (e.g., when ptime=68, it would be impossible to distinguish if the 665 packet is carrying one frame of 67.5 ms or three frames of 22.5 ms). 667 Note that the payload format (encoding) names are commonly shown in 668 upper case. Media subtypes are commonly shown in lower case. These 669 names are case insensitive in both places. Similarly, parameter 670 names are case insensitive in both the media subtype name and the 671 default mapping to the SDP a=fmtp attribute. 673 4.3. Declarative SDP Considerations 675 For declarative media, the "bitrate" parameter specifies the possible 676 bitrates used by the sender. Multiple TSVCIS rtpmap values (such as 677 97, 98, and 99, as used below) MAY be used to convey TSVCIS-coded 678 voice at different bitrates. The receiver can then select an 679 appropriate TSVCIS codec by using 97, 98, or 99. 681 m=audio 49120 RTP/AVP 97 98 99 682 a=rtpmap:97 TSVCIS/8000 683 a=fmtp:97 bitrate=2400 684 a=rtpmap:98 TSVCIS/8000 685 a=fmtp:98 bitrate=1200 686 a=rtpmap:99 TSVCIS/8000 687 a=fmtp:99 bitrate=600 689 For declarative media, the "tcmax" parameter specifies the maximum 690 number of TSVCIS packed parameter octets used by the sender or the 691 sender's communications channel. 693 4.4. Offer/Answer SDP Considerations 695 In the Offer/Answer model [RFC3264], "bitrate" is a bidirectional 696 parameter. Both sides MUST use a common "bitrate" value or values. 697 The offer contains the bitrates supported by the offerer, listed in 698 its preferred order. The answerer MAY agree to any bitrate by 699 listing the bitrate first in the answerer response. Additionally, 700 the answerer MAY indicate any secondary bitrate or bitrates that it 701 supports. The initial bitrate used by both parties SHALL be the 702 first bitrate specified in the answerer response. 704 For example, if offerer bitrates are "2400,600" and answer bitrates 705 are "600,2400", the initial bitrate is 600. If other bitrates are 706 provided by the answerer, any common bitrate between the offer and 707 answer MAY be used at any time in the future. Activation of these 708 other common bitrates is beyond the scope of this document. 710 The use of a lower bitrate is often important for a case such as when 711 one endpoint utilizes a bandwidth-constrained link (e.g., 1200 bps 712 radio link or slower), where only the lower coder bitrate will work. 714 In the Offer/Answer model [RFC3264], "tcmax" is a bidirectional 715 parameter. Both sides SHOULD use a common "tcmax" value. The offer 716 contains the tcmax supported by the offerer. The answerer MAY agree 717 to any tcmax equal or less than this value by stating the desired 718 tcmax in the answerer response. The answerer alternatively MAY 719 identify its own tcmax and rely on TSVCIS ignoring any augmented data 720 it cannot use. 722 5. Discontinuous Transmissions 724 A primary application of TSVCIS is for radio communications of voice 725 conversations, and discontinuous transmissions are normal. When 726 TSVCIS is used in an IP network, TSVCIS RTP packet transmissions may 727 cease and resume frequently. RTP synchronization source (SSRC) 728 sequence number gaps indicate lost packets to be filled by PLC, while 729 abrupt loss of RTP packets indicates intended discontinuous 730 transmissions. 732 If a TSVCIS coder so desires, it may send a MELPe comfort noise frame 733 as per Appendix B of [SCIP210] prior to ceasing transmission. A 734 receiver may optionally use comfort noise during its silence periods. 735 No SDP negotiations are required. 737 6. Packet Loss Concealment 739 TSVCIS packet loss concealment (PLC) uses the special properties and 740 coding for the pitch/voicing parameter of the MELPe 2400 bps coder. 741 The PLC erasure indication utilizes any of the errored encodings of a 742 non-voiced frame as identified in Table 1 of [MELPE]. For the sake of 743 simplicity, it is preferred that a code value of 3 for the 744 pitch/voicing parameter be used. Hence, set bits P0 and P1 to one 745 and bits P2, P3, P4, P5, and P6 to zero. 747 When using PLC in 1200 bps or 600 bps mode, the MELPe 2400 bps 748 decoder is called three or four times, respectively, to cover the 749 loss of a low bitrate MELPe frame. 751 7. IANA Considerations 753 This memo requests that IANA registers TSVCIS as specified in Section 754 4.1. The media type is also requested to be added to the IANA 755 registry for "RTP Payload Format MIME types" 756 (http://www.iana.org/assignments/rtp-parameters). 758 8. Security Considerations 760 RTP packets using the payload format defined in this specification 761 are subject to the security considerations discussed in the RTP 762 specification [RFC3550] and in any applicable RTP profile such as 763 RTP/AVP [RFC3551], RTP/AVPF [RFC4585], RTP/SAVP [RFC3711], or 764 RTP/SAVPF [RFC5124]. However, as discussed in [RFC7202], it is not 765 an RTP payload format's responsibility to discuss or mandate what 766 solutions are used to meet such basic security goals as 767 confidentiality, integrity, and source authenticity for RTP in 768 general. This responsibility lies with anyone using RTP in an 769 application. They can find guidance on available security mechanisms 770 and important considerations in [RFC7201]. Applications SHOULD use 771 one or more appropriate strong security mechanisms. The rest of this 772 section discusses the security-impacting properties of the payload 773 format itself. 775 This RTP payload format and the TSVCIS decoder do not exhibit any 776 significant non-uniformity in the receiver-side computational 777 complexity for packet processing and thus are unlikely to pose a 778 denial-of-service threat due to the receipt of pathological data. 779 Additionally, the RTP payload format does not contain any active 780 content. 782 Please see the security considerations discussed in [RFC6562] 783 regarding VAD and its effect on bitrates. 785 10. References 787 10.1. Normative References 789 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 790 Requirement Levels", BCP 14, RFC 2119, 791 DOI 10.17487/RFC2119, March 1997, 792 . 794 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 795 Key Words", BCP 14, RFC 8174, May 2017, 796 . 798 [RFC2736] Handley, M. and C. Perkins, "Guidelines for Writers of RTP 799 Payload Format Specifications", BCP 36, RFC 2736, 800 DOI 10.17487/RFC2736, December 1999, 801 . 803 [RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model 804 with Session Description Protocol (SDP)", RFC 3264, 805 DOI 10.17487/RFC3264, June 2002, 806 . 808 [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. 809 Jacobson, "RTP: A Transport Protocol for Real-Time 810 Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, 811 July 2003, . 813 [RFC3551] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and 814 Video Conferences with Minimal Control", STD 65, RFC 3551, 815 DOI 10.17487/RFC3551, July 2003, 816 . 818 [RFC8130] Demjanenko, V., and D. Satterlee, "RTP Payload Format for 819 the Mixed Excitation Linear Prediction Enhanced (MELPe) 820 Codec", RFC 8130, DOI 10.tbd/RFC8130, March 2017, 821 . 823 [RFC3711] Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K. 824 Norrman, "The Secure Real-time Transport Protocol (SRTP)", 825 RFC 3711, DOI 10.17487/RFC3711, March 2004, 826 . 828 [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session 829 Description Protocol", RFC 4566, DOI 10.17487/RFC4566, 830 July 2006, . 832 [RFC4855] Casner, S., "Media Type Registration of RTP Payload 833 Formats", RFC 4855, DOI 10.17487/RFC4855, February 2007, 834 . 836 [RFC5124] Ott, J. and E. Carrara, "Extended Secure RTP Profile for 837 Real-time Transport Control Protocol (RTCP)-Based Feedback 838 (RTP/SAVPF)", RFC 5124, DOI 10.17487/RFC5124, 839 February 2008, . 841 [RFC6562] Perkins, C. and JM. Valin, "Guidelines for the Use of 842 Variable Bit Rate Audio with Secure RTP", RFC 6562, 843 DOI 10.17487/RFC6562, March 2012, 844 . 846 [RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type 847 Specifications and Registration Procedures", BCP 13, 848 RFC 6838, DOI 10.17487/RFC6838, January 2013, 849 . 851 [RFC8083] Perkins, C. and V. Singh, "Multimedia Congestion Control: 852 Circuit Breakers for Unicast RTP Sessions", RFC 8083, 853 DOI 10.17487/RFC8083, March 2017, 854 . 856 [RFC8085] Eggert, L., Fairhurst, G., and G. Shepherd, "UDP Usage 857 Guidelines", RFC 8085, DOI 10.17487/RFC8085, March 2017, 858 . 860 [NRLVDR] Heide, D., Cohen, A., Lee, Y., and T. Moran, "Universal 861 Vocoder Using Variable Data Rate Vocoding", Naval Research 862 Lab, NRL/FR/5555-13-10,239, June 2013. 864 [MELP] Department of Defense Telecommunications Standard, 865 "Analog-to-Digital Conversion of Voice by 2,400 Bit/Second 866 Mixed Excitation Linear Prediction (MELP)", MIL-STD-3005, 867 December 1999. 869 [MELPE] North Atlantic Treaty Organization (NATO), "The 600 Bit/S, 870 1200 Bit/S and 2400 Bit/S NATO Interoperable Narrow Band 871 Voice Coder", STANAG No. 4591, January 2006. 873 [SCIP210] National Security Agency, "SCIP Signaling Plan", SCIP-210, 874 December 2007. 876 10.2. Informative References 878 [TSVCIS] National Security Agency, "Tactical Secure Voice 879 Cryptographic Interoperability Specification (TSVCIS) 880 Version 3.1", NSA 09-01A, March 2019. 882 [RFC4585] Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey, 883 "Extended RTP Profile for Real-time Transport Control 884 Protocol (RTCP)-Based Feedback (RTP/AVPF)", RFC 4585, 885 DOI 10.17487/RFC4585, July 2006, 886 . 888 [RFC7201] Westerlund, M. and C. Perkins, "Options for Securing RTP 889 Sessions", RFC 7201, DOI 10.17487/RFC7201, April 2014, 890 . 892 [RFC7202] Perkins, C. and M. Westerlund, "Securing the RTP 893 Framework: Why RTP Does Not Mandate a Single Media 894 Security Solution", RFC 7202, DOI 10.17487/RFC7202, 895 April 2014, . 897 [RMCAT] IETF, RTP Media Congestion Avoidance Techniques (rmcat) 898 Working Group, 899 . 901 Authors' Addresses 903 Victor Demjanenko, Ph.D. 904 VOCAL Technologies, Ltd. 905 520 Lee Entrance, Suite 202 906 Buffalo, NY 14228 907 United States of America 909 Phone: +1 716 688 4675 910 Email: victor.demjanenko@vocal.com 911 John Punaro 912 VOCAL Technologies, Ltd. 913 520 Lee Entrance, Suite 202 914 Buffalo, NY 14228 915 United States of America 917 Phone: +1 716 688 4675 918 Email: john.punaro@vocal.com 920 David Satterlee 921 VOCAL Technologies, Ltd. 922 520 Lee Entrance, Suite 202 923 Buffalo, NY 14228 924 United States of America 926 Phone: +1 716 688 4675 927 Email: david.satterlee@vocal.com