idnits 2.17.1 draft-ietf-payload-tsvcis-04.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 (October 25, 2019) is 1643 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) ** Downref: Normative reference to an Informational RFC: RFC 8088 ** 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: 2 errors (**), 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: April 27, 2020 October 25, 2019 8 RTP Payload Format for TSVCIS Codec 9 draft-ietf-payload-tsvcis-04 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] [RFC8088]. 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. 141 TSVCIS augmented speech data is derived from the signal processing 142 and data already performed by the MELPe speech coder. For the 143 purposes of this specification, only the general parameter nature of 144 TSVCIS will be characterized. Depending on the bandwidth available 145 (and FEC requirements), a varying number of TSVCIS-specific speech 146 coder parameters need to be transported. These are first byte-packed 147 and then conveyed from encoder to decoder. 149 Byte packing of TSVCIS speech data into packed parameters is 150 processed as per the following example: 152 Three-bit field: bits A, B, and C (A is MSB, C is LSB) 153 Five-bit field: bits D, E, F, G, and H (D is MSB, H is LSB) 155 MSB LSB 156 0 1 2 3 4 5 6 7 157 +------+------+------+------+------+------+------+------+ 158 | H | G | F | E | D | C | B | A | 159 +------+------+------+------+------+------+------+------+ 161 This packing method places the three-bit field "first" in the lowest 162 bits followed by the next five-bit field. Parameters may be split 163 between octets with the most significant bits in the earlier octet. 164 Any unfilled bits in the last octet MUST be filled with zero. 166 In order to accommodate a varying amount of TSVCIS augmented speech 167 data, it is only necessary to specify the number of octets containing 168 the packed TSVCIS parameters. The encoding to do so is presented in 169 Section 3.2. TSVCIS specifically uses the NRL VDR in two 170 configurations using 15 and 35 packed octet parameters [TSVCIS]. 172 3. Payload Format 174 The TSVCIS codec augments the standard MELP 2400, 1200 and 600 175 bitrates and hence uses 22.5, 67.5, or 90 ms frames with a sampling 176 rate clock of 8 kHz, so the RTP timestamp MUST be in units of 1/8000 177 of a second. 179 The RTP payload for TSVCIS has the format shown in Figure 1. No 180 additional header specific to this payload format is needed. This 181 format is intended for situations where the sender and the receiver 182 send one or more codec data frames per packet. 184 0 1 2 3 185 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 186 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 187 | RTP Header | 188 +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ 189 | | 190 + one or more frames of TSVCIS | 191 | | 192 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 194 Figure 1: Packet Format Diagram 196 The RTP header of the packetized encoded TSVCIS speech has the 197 expected values as described in [RFC3550]. The usage of the M bit 198 SHOULD be as specified in the applicable RTP profile -- for example, 199 [RFC3551], where [RFC3551] specifies that if the sender does not 200 suppress silence (i.e., sends a frame on every frame interval), the 201 M bit will always be zero. When more than one codec data frame is 202 present in a single RTP packet, the timestamp specified is that of 203 the oldest data frame represented in the RTP packet. 205 The assignment of an RTP payload type for this new packet format is 206 outside the scope of this document and will not be specified here. It 207 is expected that the RTP profile for a particular class of 208 applications will assign a payload type for this encoding, or if that 209 is not done, then a payload type in the dynamic range shall be chosen 210 by the sender. 212 3.1. MELPe Bitstream Definitions 214 The TCVCIS speech coder includes all three MELPe coder rates used as 215 base speech parameters or as speech coders for bandwidth restricted 216 links. RTP packetization of MELPe follows RFC 8130 and is repeated 217 here for all three MELPe rates [RFC8130] with its recommendations now 218 regarded as requirements. The bits previously labeled as RSVA, RSVB, 219 and RSVC in RFC 8130 SHOULD be filled with rate coding, CODA, CODB, 220 and CODC, as shown in Table 1 (compatible with Table 7 in Section 3.3 221 of [RFC8130]). 223 +-------------------+------+------+------+------+ 224 | Coder Bitrate | CODA | CODB | CODC |Length| 225 +-------------------+------+------+------+------+ 226 | 2400 bps | 0 | 0 | N/A | 7 | 227 +-------------------+------+------+------+------+ 228 | 1200 bps | 1 | 0 | 0 | 11 | 229 +-------------------+------+------+------+------+ 230 | 600 bps | 0 | 1 | N/A | 7 | 231 +-------------------+------+------+------+------+ 232 | Comfort Noise | 1 | 0 | 1 | 2 | 233 +-------------------+------+------+------+------+ 234 | TSVCIS data | 1 | 1 | N/A | var. | 235 +-------------------+------+------+------+------+ 237 Table 1: TSVCIS/MELPe Frame Bitrate Indicators and Frame Length 239 The total number of bits used to describe one MELPe frame of 2400 bps 240 speech is 54, which fits in 7 octets (with two rate code bits). For 241 MELPe 1200 bps speech, the total number of bits used is 81, which 242 fits in 11 octets (with three rate code bits and four unused bits). 243 For MELPe 600 bps speech, the total number of bits used is 54, which 244 fits in 7 octets (with two rate code bits). The comfort noise frame 245 consists of 13 bits, which fits in 2 octets (with three rate code 246 bits). TSVCIS packed parameters will use the last code combination 247 in a trailing byte as discussed in Section 3.2. 249 It should be noted that CODB for MELPe 600 bps mode MAY deviate from 250 the value in Table 1 when bit 55 is used as an end-to-end framing 251 bit. Frame decoding would remain distinct as CODA being zero on its 252 own would indicate a 7-byte frame for either 2400 or 600 bps rate and 253 the use of 600 bps speech coding could be deduced from the RTP 254 timestamp (and anticipated by the SDP negotiations). 256 3.1.1. 2400 bps Bitstream Structure 258 The 2400 bps MELPe RTP payload is constructed as per Figure 2. Note 259 that CODA MUST be filled with 0 and CODB SHOULD be filled with 0 as 260 per Section 3.1. CODB MAY contain an end-to-end framing bit if 261 required by the endpoints. 263 MSB LSB 264 0 1 2 3 4 5 6 7 265 +------+------+------+------+------+------+------+------+ 266 | B_08 | B_07 | B_06 | B_05 | B_04 | B_03 | B_02 | B_01 | 267 +------+------+------+------+------+------+------+------+ 268 | B_16 | B_15 | B_14 | B_13 | B_12 | B_11 | B_10 | B_09 | 269 +------+------+------+------+------+------+------+------+ 270 | B_24 | B_23 | B_22 | B_21 | B_20 | B_19 | B_18 | B_17 | 271 +------+------+------+------+------+------+------+------+ 272 | B_32 | B_31 | B_30 | B_29 | B_28 | B_27 | B_26 | B_25 | 273 +------+------+------+------+------+------+------+------+ 274 | B_40 | B_39 | B_38 | B_37 | B_36 | B_35 | B_34 | B_33 | 275 +------+------+------+------+------+------+------+------+ 276 | B_48 | B_47 | B_46 | B_45 | B_44 | B_43 | B_42 | B_41 | 277 +------+------+------+------+------+------+------+------+ 278 | CODA | CODB | B_54 | B_53 | B_52 | B_51 | B_50 | B_49 | 279 +------+------+------+------+------+------+------+------+ 281 Figure 2: Packed MELPe 2400 bps Payload Octets 283 3.1.2. 1200 bps Bitstream Structure 285 The 1200 bps MELPe RTP payload is constructed as per Figure 3. Note 286 that CODA, CODB, and CODC MUST be filled with 1, 0, and 0 287 respectively as per Section 3.1. RSV0 MUST be coded as 0. 289 MSB LSB 290 0 1 2 3 4 5 6 7 291 +------+------+------+------+------+------+------+------+ 292 | B_08 | B_07 | B_06 | B_05 | B_04 | B_03 | B_02 | B_01 | 293 +------+------+------+------+------+------+------+------+ 294 | B_16 | B_15 | B_14 | B_13 | B_12 | B_11 | B_10 | B_09 | 295 +------+------+------+------+------+------+------+------+ 296 | B_24 | B_23 | B_22 | B_21 | B_20 | B_19 | B_18 | B_17 | 297 +------+------+------+------+------+------+------+------+ 298 | B_32 | B_31 | B_30 | B_29 | B_28 | B_27 | B_26 | B_25 | 299 +------+------+------+------+------+------+------+------+ 300 | B_40 | B_39 | B_38 | B_37 | B_36 | B_35 | B_34 | B_33 | 301 +------+------+------+------+------+------+------+------+ 302 | B_48 | B_47 | B_46 | B_45 | B_44 | B_43 | B_42 | B_41 | 303 +------+------+------+------+------+------+------+------+ 304 | B_56 | B_55 | B_54 | B_53 | B_52 | B_51 | B_50 | B_49 | 305 +------+------+------+------+------+------+------+------+ 306 | B_64 | B_63 | B_62 | B_61 | B_60 | B_59 | B_58 | B_57 | 307 +------+------+------+------+------+------+------+------+ 308 | B_72 | B_71 | B_70 | B_69 | B_68 | B_67 | B_66 | B_65 | 309 +------+------+------+------+------+------+------+------+ 310 | B_80 | B_79 | B_78 | B_77 | B_76 | B_75 | B_74 | B_73 | 311 +------+------+------+------+------+------+------+------+ 312 | CODA | CODB | CODC | RSV0 | RSV0 | RSV0 | RSV0 | B_81 | 313 +------+------+------+------+------+------+------+------+ 315 Figure 3: Packed MELPe 1200 bps Payload Octets 317 3.1.3. 600 bps Bitstream Structure 319 The 600 bps MELPe RTP payload is constructed as per Figure 4. Note 320 CODA MUST be filled with 0 and CODB SHOULD be filled with 1 as per 321 Section 3.1. CODB MAY contain an end-to-end framing bit if required 322 by the endpoints. 324 MSB LSB 325 0 1 2 3 4 5 6 7 326 +------+------+------+------+------+------+------+------+ 327 | B_08 | B_07 | B_06 | B_05 | B_04 | B_03 | B_02 | B_01 | 328 +------+------+------+------+------+------+------+------+ 329 | B_16 | B_15 | B_14 | B_13 | B_12 | B_11 | B_10 | B_09 | 330 +------+------+------+------+------+------+------+------+ 331 | B_24 | B_23 | B_22 | B_21 | B_20 | B_19 | B_18 | B_17 | 332 +------+------+------+------+------+------+------+------+ 333 | B_32 | B_31 | B_30 | B_29 | B_28 | B_27 | B_26 | B_25 | 334 +------+------+------+------+------+------+------+------+ 335 | B_40 | B_39 | B_38 | B_37 | B_36 | B_35 | B_34 | B_33 | 336 +------+------+------+------+------+------+------+------+ 337 | B_48 | B_47 | B_46 | B_45 | B_44 | B_43 | B_42 | B_41 | 338 +------+------+------+------+------+------+------+------+ 339 | CODA | CODB | B_54 | B_53 | B_52 | B_51 | B_50 | B_49 | 340 +------+------+------+------+------+------+------+------+ 342 Figure 4: Packed MELPe 600 bps Payload Octets 344 3.1.4. Comfort Noise Bitstream Definition 346 The comfort noise MELPe RTP payload is constructed as per Figure 5. 347 Note that CODA, CODB, and CODC MUST be filled with 1, 0, and 1 348 respectively as per Section 3.1. 350 MSB LSB 351 0 1 2 3 4 5 6 7 352 +------+------+------+------+------+------+------+------+ 353 | B_08 | B_07 | B_06 | B_05 | B_04 | B_03 | B_02 | B_01 | 354 +------+------+------+------+------+------+------+------+ 355 | CODA | CODB | CODC | B_13 | B_12 | B_11 | B_10 | B_09 | 356 +------+------+------+------+------+------+------+------+ 358 Figure 5: Packed MELPe Comfort Noise Payload Octets 360 3.2. TSVCIS Bitstream Definition 362 The TSVCIS augmented speech data as packed parameters MUST be placed 363 immediately after a corresponding MELPe 2400 bps payload in the same 364 RTP packet. The packed parameters are counted in octets (TC). The 365 preferred placement SHOULD be used for TSVCIS payloads with TC less 366 than or equal to 77 octets, and is shown in Figure 6. In the 367 preferred placement, a single trailing octet SHALL be appended to 368 include a two-bit rate code, CODA and CODB, (both bits set to one) 369 and a six-bit modified count (MTC). The special modified count value 370 of all ones (representing a MTC value of 63) SHALL NOT be used for 371 this format as it is used as the indicator for the alternate packing 372 format shown next. In a standard implementation, the TSVCIS speech 373 coder uses a minimum of 15 octets for parameters in octet packed 374 form. The modified count (MTC) MUST be reduced by 15 from the full 375 octet count (TC). Computed MTC = TC-15. This accommodates a maximum 376 of 77 parameter octets (maximum value of MTC is 62, 77 is the sum of 377 62+15). 379 MSB LSB 380 0 1 2 3 4 5 6 7 381 +------+------+------+------+------+------+------+------+ 383 1 | T008 | T007 | T006 | T005 | T004 | T003 | T002 | T001 | 384 +------+------+------+------+------+------+------+------+ 385 2 | T016 | T015 | T014 | T013 | T012 | T011 | T010 | T009 | 386 +------+------+------+------+------+------+------+------+ 387 3 | T024 | T023 | T022 | T021 | T020 | T019 | T018 | T017 | 388 +------+------+------+------+------+------+------+------+ 389 4 | T032 | T031 | T030 | T029 | T028 | T027 | T026 | T025 | 390 +------+------+------+------+------+------+------+------+ 391 5 | T040 | T039 | T038 | T037 | T036 | T035 | T034 | T033 | 392 +------+------+------+------+------+------+------+------+ 393 6 | T048 | T047 | T046 | T045 | T044 | T043 | T042 | T041 | 394 +------+------+------+------+------+------+------+------+ 395 7 | TO56 | TO55 | T054 | T053 | T052 | T051 | T050 | T049 | 396 +------+------+------+------+------+------+------+------+ 397 8 | T064 | T063 | T062 | T061 | T060 | T059 | T058 | T057 | 398 +------+------+------+------+------+------+------+------+ 399 9 | T072 | T071 | T070 | T069 | T068 | T067 | T066 | T065 | 400 +------+------+------+------+------+------+------+------+ 401 10 | T080 | T079 | T078 | T077 | T076 | T075 | T074 | T073 | 402 +------+------+------+------+------+------+------+------+ 403 11 | T088 | T087 | T086 | T085 | T084 | T083 | T082 | T081 | 404 +------+------+------+------+------+------+------+------+ 405 12 | TO96 | TO95 | T094 | T093 | T092 | T091 | T090 | T089 | 406 +------+------+------+------+------+------+------+------+ 407 13 | T104 | T103 | T102 | T101 | T100 | T099 | T098 | T097 | 408 +------+------+------+------+------+------+------+------+ 409 14 | T112 | T111 | T110 | T109 | T108 | T107 | T106 | T105 | 410 +------+------+------+------+------+------+------+------+ 411 15 | T120 | T119 | T118 | T117 | T116 | T115 | T114 | T113 | 412 +------+------+------+------+------+------+------+------+ 413 | . . . . | 414 +------+------+------+------+------+------+------+------+ 415 TC+1 | CODA | CODB | modified octet count | 416 +------+------+------+------+------+------+------+------+ 418 Figure 6: Preferred Packed TSVCIS Payload Octets 420 In order to accommodate all other NRL VDR configurations, an 421 alternate parameter placement MUST use two trailing bytes as shown in 422 Figure 7. The last trailing byte MUST be filled with a two-bit rate 423 code, CODA and CODB, (both bits set to one) and its six-bit count 424 field MUST be filled with ones. The second to last trailing byte 425 MUST contain the parameter count (TC) in octets (a value from 1 and 426 255, inclusive). The value of zero SHALL be considered as reserved. 428 MSB LSB 429 0 1 2 3 4 5 6 7 430 +------+------+------+------+------+------+------+------+ 432 1 | T008 | T007 | T006 | T005 | T004 | T003 | T002 | T001 | 433 +------+------+------+------+------+------+------+------+ 434 2 | T016 | T015 | T014 | T013 | T012 | T011 | T010 | T009 | 435 +------+------+------+------+------+------+------+------+ 436 | . . . . | 437 +------+------+------+------+------+------+------+------+ 438 TC+1 | octet count | 439 +------+------+------+------+------+------+------+------+ 440 TC+2 | CODA | CODB | 1 | 1 | 1 | 1 | 1 | 1 | 441 +------+------+------+------+------+------+------+------+ 443 Figure 7: Length Unrestricted Packed TSVCIS Payload Octets 445 3.3. Multiple TSVCIS Frames in an RTP Packet 447 A TSVCIS RTP packet payload consists of zero or more consecutive 448 TSVCIS coder frames (each consisting of MELPe 2400 and TSVCIS coder 449 data), with the oldest frame first, followed by zero or one MELPe 450 comfort noise frame. The presence of a comfort noise frame can be 451 determined by its rate code bits in its last octet. 453 The default packetization interval is one coder frame (22.5, 67.5, or 454 90 ms) according to the coder bitrate (2400, 1200, or 600 bps). For 455 some applications, a longer packetization interval is used to reduce 456 the packet rate. 458 A TSVCIS RTP packet without coder and comfort noise frames MAY be 459 used periodically by an endpoint to indicate connectivity by an 460 otherwise idle receiver. 462 TSVCIS coder frames in a single RTP packet MAY have varying TSVCIS 463 parameter octet counts. Its packed parameter octet count (length) is 464 indicated in the trailing byte(s). All MELPe frames in a single RTP 465 packet MUST be of the same coder bitrate. For all MELPe coder 466 frames, the coder rate bits in the trailing byte identify the 467 contents and length as per Table 1. 469 It is important to observe that senders have the following additional 470 restrictions: 472 Senders SHOULD NOT include more TSVCIS or MELPe frames in a single 473 RTP packet than will fit in the MTU of the RTP transport protocol. 475 Frames MUST NOT be split between RTP packets. 477 It is RECOMMENDED that the number of frames contained within an RTP 478 packet be consistent with the application. For example, in telephony 479 and other real-time applications where delay is important, then the 480 fewer frames per packet the lower the delay, whereas for bandwidth- 481 constrained links or delay-insensitive streaming messaging 482 applications, more than one frame per packet or many frames per 483 packet would be acceptable. 485 Information describing the number of frames contained in an RTP 486 packet is not transmitted as part of the RTP payload. The way to 487 determine the number of TSVCIS/MELPe frames is to identify each frame 488 type and length thereby counting the total number of octets within 489 the RTP packet. 491 3.4. Congestion Control Considerations 493 The target bitrate of TSVCIS can be adjusted at any point in time, 494 thus allowing congestion management. Furthermore, the amount of 495 encoded speech or audio data encoded in a single packet can be used 496 for congestion control, since the packet rate is inversely 497 proportional to the packet duration. A lower packet transmission 498 rate reduces the amount of header overhead but at the same time 499 increases latency and loss sensitivity, so it ought to be used 500 with care. 502 Since UDP does not provide congestion control, applications that use 503 RTP over UDP SHOULD implement their own congestion control above the 504 UDP layer [RFC8085] and MAY also implement a transport circuit 505 breaker [RFC8083]. Work in the RMCAT working group [RMCAT] describes 506 the interactions and conceptual interfaces necessary between the 507 application components that relate to congestion control, including 508 the RTP layer, the higher-level media codec control layer, and the 509 lower-level transport interface, as well as components dedicated to 510 congestion control functions. 512 4. Payload Format Parameters 514 This RTP payload format is identified using the TSVCIS media subtype, 515 which is registered in accordance with RFC 4855 [RFC4855] and per the 516 media type registration template from RFC 6838 [RFC6838]. 518 4.1. Media Type Definitions 520 Type name: audio 522 Subtype name: TSVCIS 524 Required parameters: N/A 526 Optional parameters: 528 ptime: the recommended length of time (in milliseconds) 529 represented by the media in a packet. It SHALL use the nearest 530 rounded-up ms integer packet duration. For TSVCIS, this 531 corresponds to the following values: 23, 45, 68, 90, 112, 135, 532 156, and 180. Larger values can be used as long as they are 533 properly rounded. See Section 6 of RFC 4566 [RFC4566]. 535 maxptime: the maximum length of time (in milliseconds) that can be 536 encapsulated in a packet. It SHALL use the nearest rounded-up 537 ms integer packet duration. For TSVCIS, this corresponds to 538 the following values: 23, 45, 68, 90, 112, 135, 156, and 180. 539 Larger values can be used as long as they are properly rounded. 540 See Section 6 of RFC 4566 [RFC4566]. 542 bitrate: specifies the MELPe coder bitrates supported. Possible 543 values are a comma-separated list of rates from the following 544 set: 2400, 1200, 600. The modes are listed in order of 545 preference; first is preferred. If "bitrate" is not present, 546 the fixed coder bitrate of 2400 MUST be used. 548 tcmax: specifies the TSVCIS maximum value for TC supported or 549 desired ranging from 1 to 255. If "tcmax" is not present, a 550 default value of 35 is used. 552 Encoding considerations: This media subtype is framed and binary; see 553 Section 4.8 of RFC 6838 [RFC6838]. 555 Security considerations: Please see Section 8 of RFC XXXX. 557 [EDITOR NOTE - please replace XXXX with the RFC number of this 558 document.] 560 Interoperability considerations: N/A 562 Published specification: [TSVCIS] 564 Applications that use this media type: N/A 566 Fragment identifier considerations: N/A 568 Additional information: 570 Clock Rate (Hz): 8000 571 Channels: 1 573 Deprecated alias names for this type: N/A 575 Magic number(s): N/A 576 File extension(s): N/A 578 Macintosh file type code(s): N/A 580 Person & email address to contact for further information: 582 Victor Demjanenko, Ph.D. 583 VOCAL Technologies, Ltd. 584 520 Lee Entrance, Suite 202 585 Buffalo, NY 14228 586 United States of America 587 Phone: +1 716 688 4675 588 Email: victor.demjanenko@vocal.com 590 Intended usage: COMMON 592 Restrictions on usage: The media subtype depends on RTP framing and 593 hence is only defined for transfer via RTP [RFC3550]. Transport 594 within other framing protocols is not defined at this time. 596 Author: Victor Demjanenko 598 Change controller: IETF, contact 600 Provisional registration? (standards tree only): No 602 4.2. Mapping to SDP 604 The mapping of the above-defined payload format media subtype and its 605 parameters SHALL be done according to Section 3 of RFC 4855 606 [RFC4855]. 608 The information carried in the media type specification has a 609 specific mapping to fields in the Session Description Protocol (SDP) 610 [RFC4566], which is commonly used to describe RTP sessions. When SDP 611 is used to specify sessions employing the TSVCIS codec, the mapping 612 is as follows: 614 o The media type ("audio") goes in SDP "m=" as the media name. 616 o The media subtype (payload format name) goes in SDP "a=rtpmap" as 617 the encoding name. 619 o The parameter "bitrate" goes in the SDP "a=fmtp" attribute by 620 copying it as a "bitrate=" string. 622 o The parameter "tcmax" goes in the SDP "a=fmtp" attribute by 623 copying it as a "tcmax=" string. 625 o The parameters "ptime" and "maxptime" go in the SDP "a=ptime" and 626 "a=maxptime" attributes, respectively. 628 When conveying information via SDP, the encoding name SHALL be 629 "TSVCIS" (the same as the media subtype). 631 An example of the media representation in SDP for describing TSVCIS 632 might be: 634 m=audio 49120 RTP/AVP 96 635 a=rtpmap:96 TSVCIS/8000 637 The optional media type parameter "bitrate", when present, MUST be 638 included in the "a=fmtp" attribute in the SDP, expressed as a media 639 type string in the form of a semicolon-separated list of 640 parameter=value pairs. The string "value" can be one or more of 641 2400, 1200, and 600, separated by commas (where each bitrate value 642 indicates the corresponding MELPe coder). An example of the media 643 representation in SDP for describing TSVCIS when all three coder 644 bitrates are supported might be: 646 m=audio 49120 RTP/AVP 96 647 a=rtpmap:96 TSVCIS/8000 648 a=fmtp:96 bitrate=2400,600,1200 650 The optional media type parameter "tcmax", when present, MUST be 651 included in the "a=fmtp" attribute in the SDP, expressed as a media 652 type string in the form of a semicolon-separated list of 653 parameter=value pairs. The string "value" is an integer number in 654 the range of 1 to 255 representing the maximum number of TSVCIS 655 parameter octets supported. An example of the media representation 656 in SDP for describing TSVCIS with a maximum of 101 octets supported 657 is as follows: 659 m=audio 49120 RTP/AVP 96 660 a=rtpmap:96 TSVCIS/8000 661 a=fmtp:96 tcmax=101 663 The parameter "ptime" cannot be used for the purpose of specifying 664 the TSVCIS operating mode, due to the fact that for certain values it 665 will be impossible to distinguish which mode is about to be used 666 (e.g., when ptime=68, it would be impossible to distinguish if the 667 packet is carrying one frame of 67.5 ms or three frames of 22.5 ms). 669 Note that the payload format (encoding) names are commonly shown in 670 upper case. Media subtypes are commonly shown in lower case. These 671 names are case insensitive in both places. Similarly, parameter 672 names are case insensitive in both the media subtype name and the 673 default mapping to the SDP a=fmtp attribute. 675 4.3. Declarative SDP Considerations 677 For declarative media, the "bitrate" parameter specifies the possible 678 bitrates used by the sender. Multiple TSVCIS rtpmap values (such as 679 97, 98, and 99, as used below) MAY be used to convey TSVCIS-coded 680 voice at different bitrates. The receiver can then select an 681 appropriate TSVCIS codec by using 97, 98, or 99. 683 m=audio 49120 RTP/AVP 97 98 99 684 a=rtpmap:97 TSVCIS/8000 685 a=fmtp:97 bitrate=2400 686 a=rtpmap:98 TSVCIS/8000 687 a=fmtp:98 bitrate=1200 688 a=rtpmap:99 TSVCIS/8000 689 a=fmtp:99 bitrate=600 691 For declarative media, the "tcmax" parameter specifies the maximum 692 number of TSVCIS packed parameter octets used by the sender or the 693 sender's communications channel. 695 4.4. Offer/Answer SDP Considerations 697 In the Offer/Answer model [RFC3264], "bitrate" is a bidirectional 698 parameter. Both sides MUST use a common "bitrate" value or values. 699 The offer contains the bitrates supported by the offerer, listed in 700 its preferred order. The answerer MAY agree to any bitrate by 701 listing the bitrate first in the answerer response. Additionally, 702 the answerer MAY indicate any secondary bitrate or bitrates that it 703 supports. The initial bitrate used by both parties SHALL be the 704 first bitrate specified in the answerer response. 706 For example, if offerer bitrates are "2400,600" and answer bitrates 707 are "600,2400", the initial bitrate is 600. If other bitrates are 708 provided by the answerer, any common bitrate between the offer and 709 answer MAY be used at any time in the future. Activation of these 710 other common bitrates is beyond the scope of this document. 712 The use of a lower bitrate is often important for a case such as when 713 one endpoint utilizes a bandwidth-constrained link (e.g., 1200 bps 714 radio link or slower), where only the lower coder bitrate will work. 716 In the Offer/Answer model [RFC3264], "tcmax" is a bidirectional 717 parameter. Both sides SHOULD use a common "tcmax" value. The offer 718 contains the tcmax supported by the offerer. The answerer MAY agree 719 to any tcmax equal or less than this value by stating the desired 720 tcmax in the answerer response. The answerer alternatively MAY 721 identify its own tcmax and rely on TSVCIS ignoring any augmented data 722 it cannot use. 724 5. Discontinuous Transmissions 726 A primary application of TSVCIS is for radio communications of voice 727 conversations, and discontinuous transmissions are normal. When 728 TSVCIS is used in an IP network, TSVCIS RTP packet transmissions may 729 cease and resume frequently. RTP synchronization source (SSRC) 730 sequence number gaps indicate lost packets to be filled by Packet 731 Loss Concealment (PLC), while abrupt loss of RTP packets indicates 732 intended discontinuous transmissions. Resumption of voice 733 transmission SHOULD be indicated by the RTP marker bit (M) set to 1. 735 If a TSVCIS coder so desires, it may send a MELPe comfort noise frame 736 as per Appendix B of [SCIP210] prior to ceasing transmission. A 737 receiver may optionally use comfort noise during its silence periods. 738 No SDP negotiations are required. 740 6. Packet Loss Concealment 742 TSVCIS packet loss concealment (PLC) uses the special properties and 743 coding for the pitch/voicing parameter of the MELPe 2400 bps coder. 744 The PLC erasure indication utilizes any of the errored encodings of a 745 non-voiced frame as identified in Table 1 of [MELPE]. For the sake of 746 simplicity, it is preferred that a code value of 3 for the 747 pitch/voicing parameter be used. Hence, set bits P0 and P1 to one 748 and bits P2, P3, P4, P5, and P6 to zero. 750 When using PLC in 1200 bps or 600 bps mode, the MELPe 2400 bps 751 decoder is called three or four times, respectively, to cover the 752 loss of a low bitrate MELPe frame. 754 7. IANA Considerations 756 This memo requests that IANA registers TSVCIS as specified in Section 757 4.1. The media type is also requested to be added to the IANA 758 registry for "RTP Payload Format MIME types" 759 (http://www.iana.org/assignments/rtp-parameters). 761 8. Security Considerations 763 RTP packets using the payload format defined in this specification 764 are subject to the security considerations discussed in the RTP 765 specification [RFC3550] and in any applicable RTP profile such as 766 RTP/AVP [RFC3551], RTP/AVPF [RFC4585], RTP/SAVP [RFC3711], or 767 RTP/SAVPF [RFC5124]. However, as discussed in [RFC7202], it is not 768 an RTP payload format's responsibility to discuss or mandate what 769 solutions are used to meet such basic security goals as 770 confidentiality, integrity, and source authenticity for RTP in 771 general. This responsibility lies with anyone using RTP in an 772 application. They can find guidance on available security mechanisms 773 and important considerations in [RFC7201]. Applications SHOULD use 774 one or more appropriate strong security mechanisms. The rest of this 775 section discusses the security-impacting properties of the payload 776 format itself. 778 This RTP payload format and the TSVCIS decoder, to the best of our 779 knowledge, do not exhibit any significant non-uniformity in the 780 receiver-side computational complexity for packet processing and thus 781 are unlikely to pose a denial-of-service threat due to the receipt of 782 pathological data. Additionally, the RTP payload format does not 783 contain any active content. 785 Please see the security considerations discussed in [RFC6562] 786 regarding Voice Activity Detect (VAD) and its effect on bitrates. 788 10. References 790 10.1. Normative References 792 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 793 Requirement Levels", BCP 14, RFC 2119, 794 DOI 10.17487/RFC2119, March 1997, 795 . 797 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 798 2119 Key Words", BCP 14, RFC 8174, May 2017, 799 . 801 [RFC2736] Handley, M. and C. Perkins, "Guidelines for Writers of RTP 802 Payload Format Specifications", BCP 36, RFC 2736, 803 DOI 10.17487/RFC2736, December 1999, 804 . 806 [RFC8088] Westerlund, M., "How to Write an RTP Payload Format", 807 RFC 8088, DOI 10.17487/RFC8088, May 2017, 808 . 810 [RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model 811 with Session Description Protocol (SDP)", RFC 3264, 812 DOI 10.17487/RFC3264, June 2002, 813 . 815 [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. 816 Jacobson, "RTP: A Transport Protocol for Real-Time 817 Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, 818 July 2003, . 820 [RFC3551] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and 821 Video Conferences with Minimal Control", STD 65, RFC 3551, 822 DOI 10.17487/RFC3551, July 2003, 823 . 825 [RFC8130] Demjanenko, V., and D. Satterlee, "RTP Payload Format for 826 the Mixed Excitation Linear Prediction Enhanced (MELPe) 827 Codec", RFC 8130, DOI 10.tbd/RFC8130, March 2017, 828 . 830 [RFC3711] Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K. 831 Norrman, "The Secure Real-time Transport Protocol (SRTP)", 832 RFC 3711, DOI 10.17487/RFC3711, March 2004, 833 . 835 [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session 836 Description Protocol", RFC 4566, DOI 10.17487/RFC4566, 837 July 2006, . 839 [RFC4855] Casner, S., "Media Type Registration of RTP Payload 840 Formats", RFC 4855, DOI 10.17487/RFC4855, February 2007, 841 . 843 [RFC5124] Ott, J. and E. Carrara, "Extended Secure RTP Profile for 844 Real-time Transport Control Protocol (RTCP)-Based Feedback 845 (RTP/SAVPF)", RFC 5124, DOI 10.17487/RFC5124, 846 February 2008, . 848 [RFC6562] Perkins, C. and JM. Valin, "Guidelines for the Use of 849 Variable Bit Rate Audio with Secure RTP", RFC 6562, 850 DOI 10.17487/RFC6562, March 2012, 851 . 853 [RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type 854 Specifications and Registration Procedures", BCP 13, 855 RFC 6838, DOI 10.17487/RFC6838, January 2013, 856 . 858 [RFC8083] Perkins, C. and V. Singh, "Multimedia Congestion Control: 859 Circuit Breakers for Unicast RTP Sessions", RFC 8083, 860 DOI 10.17487/RFC8083, March 2017, 861 . 863 [RFC8085] Eggert, L., Fairhurst, G., and G. Shepherd, "UDP Usage 864 Guidelines", RFC 8085, DOI 10.17487/RFC8085, March 2017, 865 . 867 [NRLVDR] Heide, D., Cohen, A., Lee, Y., and T. Moran, "Universal 868 Vocoder Using Variable Data Rate Vocoding", Naval Research 869 Lab, NRL/FR/5555-13-10,239, June 2013. 871 [MELP] Department of Defense Telecommunications Standard, 872 "Analog-to-Digital Conversion of Voice by 2,400 Bit/Second 873 Mixed Excitation Linear Prediction (MELP)", MIL-STD-3005, 874 December 1999. 876 [MELPE] North Atlantic Treaty Organization (NATO), "The 600 Bit/S, 877 1200 Bit/S and 2400 Bit/S NATO Interoperable Narrow Band 878 Voice Coder", STANAG No. 4591, January 2006. 880 [SCIP210] National Security Agency, "SCIP Signaling Plan", SCIP-210, 881 December 2007. 883 10.2. Informative References 885 [TSVCIS] National Security Agency, "Tactical Secure Voice 886 Cryptographic Interoperability Specification (TSVCIS) 887 Version 3.1", NSA 09-01A, March 2019. 889 [RFC4585] Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey, 890 "Extended RTP Profile for Real-time Transport Control 891 Protocol (RTCP)-Based Feedback (RTP/AVPF)", RFC 4585, 892 DOI 10.17487/RFC4585, July 2006, 893 . 895 [RFC7201] Westerlund, M. and C. Perkins, "Options for Securing RTP 896 Sessions", RFC 7201, DOI 10.17487/RFC7201, April 2014, 897 . 899 [RFC7202] Perkins, C. and M. Westerlund, "Securing the RTP 900 Framework: Why RTP Does Not Mandate a Single Media 901 Security Solution", RFC 7202, DOI 10.17487/RFC7202, 902 April 2014, . 904 [RMCAT] IETF, RTP Media Congestion Avoidance Techniques (rmcat) 905 Working Group, 906 . 908 Authors' Addresses 910 Victor Demjanenko, Ph.D. 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: victor.demjanenko@vocal.com 920 John Punaro 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: john.punaro@vocal.com 929 David Satterlee 930 VOCAL Technologies, Ltd. 931 520 Lee Entrance, Suite 202 932 Buffalo, NY 14228 933 United States of America 935 Phone: +1 716 688 4675 936 Email: david.satterlee@vocal.com