idnits 2.17.1 draft-ietf-payload-tsvcis-05.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- 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 (April 10, 2020) is 1474 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: October 8, 2020 April 10, 2020 8 RTP Payload Format for TSVCIS Codec 9 draft-ietf-payload-tsvcis-05 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, an octet count specifies the number of octets representing 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 a fixed set of 15 and 35 packed octet 171 parameters in a standardized order [TSVCIS]. 173 3. Payload Format 175 The TSVCIS codec augments the standard MELP 2400, 1200 and 600 176 bitrates and hence uses 22.5, 67.5, or 90 ms frames with a sampling 177 rate clock of 8 kHz, so the RTP timestamp MUST be in units of 1/8000 178 of a second. 180 The RTP payload for TSVCIS has the format shown in Figure 1. No 181 additional header specific to this payload format is needed. This 182 format is intended for situations where the sender and the receiver 183 send one or more codec data frames per packet. 185 0 1 2 3 186 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 187 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 188 | RTP Header | 189 +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ 190 | | 191 + one or more frames of TSVCIS | 192 | | 193 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 195 Figure 1: Packet Format Diagram 197 The RTP header of the packetized encoded TSVCIS speech has the 198 expected values as described in [RFC3550]. The usage of the M bit 199 SHOULD be as specified in the applicable RTP profile -- for example, 200 [RFC3551], where [RFC3551] specifies that if the sender does not 201 suppress silence (i.e., sends a frame on every frame interval), the 202 M bit will always be zero. When more than one codec data frame is 203 present in a single RTP packet, the timestamp specified is that of 204 the oldest data frame represented in the RTP packet. 206 The assignment of an RTP payload type for this new packet format is 207 outside the scope of this document and will not be specified here. It 208 is expected that the RTP profile for a particular class of 209 applications will assign a payload type for this encoding, or if that 210 is not done, then a payload type in the dynamic range shall be chosen 211 by the sender. 213 3.1. MELPe Bitstream Definitions 215 The TCVCIS speech coder includes all three MELPe coder rates used as 216 base speech parameters or as speech coders for bandwidth restricted 217 links. RTP packetization of MELPe follows RFC 8130 and is repeated 218 here for all three MELPe rates [RFC8130] with its recommendations now 219 regarded as requirements. The bits previously labeled as RSVA, RSVB, 220 and RSVC in RFC 8130 SHOULD be filled with rate coding, CODA, CODB, 221 and CODC, as shown in Table 1 (compatible with Table 7 in Section 3.3 222 of [RFC8130]). 224 +-------------------+------+------+------+------+ 225 | Coder Bitrate | CODA | CODB | CODC |Length| 226 +-------------------+------+------+------+------+ 227 | 2400 bps | 0 | 0 | N/A | 7 | 228 +-------------------+------+------+------+------+ 229 | 1200 bps | 1 | 0 | 0 | 11 | 230 +-------------------+------+------+------+------+ 231 | 600 bps | 0 | 1 | N/A | 7 | 232 +-------------------+------+------+------+------+ 233 | Comfort Noise | 1 | 0 | 1 | 2 | 234 +-------------------+------+------+------+------+ 235 | TSVCIS data | 1 | 1 | N/A | var. | 236 +-------------------+------+------+------+------+ 238 Table 1: TSVCIS/MELPe Frame Bitrate Indicators and Frame Length 240 The total number of bits used to describe one MELPe frame of 2400 bps 241 speech is 54, which fits in 7 octets (with two rate code bits). For 242 MELPe 1200 bps speech, the total number of bits used is 81, which 243 fits in 11 octets (with three rate code bits and four unused bits). 244 For MELPe 600 bps speech, the total number of bits used is 54, which 245 fits in 7 octets (with two rate code bits). The comfort noise frame 246 consists of 13 bits, which fits in 2 octets (with three rate code 247 bits). TSVCIS packed parameters will use the last code combination 248 in a trailing byte as discussed in Section 3.2. 250 It should be noted that CODB for MELPe 600 bps mode MAY deviate from 251 the value in Table 1 when bit 55 is used as an alternating 1/0 252 end-to-end framing bit. Frame decoding would remain distinct as CODA 253 being zero on its own would indicate a 7-byte frame for either 2400 254 or 600 bps rate and the use of 600 bps speech coding could be deduced 255 from the RTP timestamp (and anticipated by the SDP negotiations). 257 3.1.1. 2400 bps Bitstream Structure 259 The 2400 bps MELPe RTP payload is constructed as per Figure 2. Note 260 that CODA MUST be filled with 0 and CODB SHOULD be filled with 0 as 261 per Section 3.1. CODB MAY contain an end-to-end framing bit if 262 required by the endpoints. 264 MSB LSB 265 0 1 2 3 4 5 6 7 266 +------+------+------+------+------+------+------+------+ 267 | B_08 | B_07 | B_06 | B_05 | B_04 | B_03 | B_02 | B_01 | 268 +------+------+------+------+------+------+------+------+ 269 | B_16 | B_15 | B_14 | B_13 | B_12 | B_11 | B_10 | B_09 | 270 +------+------+------+------+------+------+------+------+ 271 | B_24 | B_23 | B_22 | B_21 | B_20 | B_19 | B_18 | B_17 | 272 +------+------+------+------+------+------+------+------+ 273 | B_32 | B_31 | B_30 | B_29 | B_28 | B_27 | B_26 | B_25 | 274 +------+------+------+------+------+------+------+------+ 275 | B_40 | B_39 | B_38 | B_37 | B_36 | B_35 | B_34 | B_33 | 276 +------+------+------+------+------+------+------+------+ 277 | B_48 | B_47 | B_46 | B_45 | B_44 | B_43 | B_42 | B_41 | 278 +------+------+------+------+------+------+------+------+ 279 | CODA | CODB | B_54 | B_53 | B_52 | B_51 | B_50 | B_49 | 280 +------+------+------+------+------+------+------+------+ 282 Figure 2: Packed MELPe 2400 bps Payload Octets 284 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). The 366 preferred placement SHOULD be used for TSVCIS payloads with TC less 367 than or equal to 77 octets, and is shown in Figure 6. In the 368 preferred placement, a single trailing octet SHALL be appended to 369 include a two-bit rate code, CODA and CODB, (both bits set to one) 370 and a six-bit modified count (MTC). The special modified count value 371 of all ones (representing a MTC value of 63) SHALL NOT be used for 372 this format as it is used as the indicator for the alternate packing 373 format shown next. In a standard implementation, the TSVCIS speech 374 coder uses a minimum of 15 octets for parameters in octet packed 375 form. The modified count (MTC) MUST be reduced by 15 from the full 376 octet count (TC). Computed MTC = TC-15. This accommodates a maximum 377 of 77 parameter octets (maximum value of MTC is 62, 77 is the sum of 378 62+15). 380 MSB LSB 381 0 1 2 3 4 5 6 7 382 +------+------+------+------+------+------+------+------+ 384 1 | T008 | T007 | T006 | T005 | T004 | T003 | T002 | T001 | 385 +------+------+------+------+------+------+------+------+ 386 2 | T016 | T015 | T014 | T013 | T012 | T011 | T010 | T009 | 387 +------+------+------+------+------+------+------+------+ 388 3 | T024 | T023 | T022 | T021 | T020 | T019 | T018 | T017 | 389 +------+------+------+------+------+------+------+------+ 390 4 | T032 | T031 | T030 | T029 | T028 | T027 | T026 | T025 | 391 +------+------+------+------+------+------+------+------+ 392 5 | T040 | T039 | T038 | T037 | T036 | T035 | T034 | T033 | 393 +------+------+------+------+------+------+------+------+ 394 6 | T048 | T047 | T046 | T045 | T044 | T043 | T042 | T041 | 395 +------+------+------+------+------+------+------+------+ 396 7 | TO56 | TO55 | T054 | T053 | T052 | T051 | T050 | T049 | 397 +------+------+------+------+------+------+------+------+ 398 8 | T064 | T063 | T062 | T061 | T060 | T059 | T058 | T057 | 399 +------+------+------+------+------+------+------+------+ 400 9 | T072 | T071 | T070 | T069 | T068 | T067 | T066 | T065 | 401 +------+------+------+------+------+------+------+------+ 402 10 | T080 | T079 | T078 | T077 | T076 | T075 | T074 | T073 | 403 +------+------+------+------+------+------+------+------+ 404 11 | T088 | T087 | T086 | T085 | T084 | T083 | T082 | T081 | 405 +------+------+------+------+------+------+------+------+ 406 12 | TO96 | TO95 | T094 | T093 | T092 | T091 | T090 | T089 | 407 +------+------+------+------+------+------+------+------+ 408 13 | T104 | T103 | T102 | T101 | T100 | T099 | T098 | T097 | 409 +------+------+------+------+------+------+------+------+ 410 14 | T112 | T111 | T110 | T109 | T108 | T107 | T106 | T105 | 411 +------+------+------+------+------+------+------+------+ 412 15 | T120 | T119 | T118 | T117 | T116 | T115 | T114 | T113 | 413 +------+------+------+------+------+------+------+------+ 414 | . . . . | 415 +------+------+------+------+------+------+------+------+ 416 TC+1 | CODA | CODB | modified octet count | 417 +------+------+------+------+------+------+------+------+ 419 Figure 6: Preferred Packed TSVCIS Payload Octets 421 In order to accommodate all other NRL VDR configurations, an 422 alternate parameter placement MUST use two trailing bytes as shown in 423 Figure 7. The last trailing byte MUST be filled with a two-bit rate 424 code, CODA and CODB, (both bits set to one) and its six-bit count 425 field MUST be filled with ones. The second to last trailing byte 426 MUST contain the parameter count (TC) in octets (a value from 1 and 427 255, inclusive). The value of zero SHALL be considered as reserved. 429 MSB LSB 430 0 1 2 3 4 5 6 7 431 +------+------+------+------+------+------+------+------+ 433 1 | T008 | T007 | T006 | T005 | T004 | T003 | T002 | T001 | 434 +------+------+------+------+------+------+------+------+ 435 2 | T016 | T015 | T014 | T013 | T012 | T011 | T010 | T009 | 436 +------+------+------+------+------+------+------+------+ 437 | . . . . | 438 +------+------+------+------+------+------+------+------+ 439 TC+1 | octet count | 440 +------+------+------+------+------+------+------+------+ 441 TC+2 | CODA | CODB | 1 | 1 | 1 | 1 | 1 | 1 | 442 +------+------+------+------+------+------+------+------+ 444 Figure 7: Length Unrestricted Packed TSVCIS Payload Octets 446 3.3. Multiple TSVCIS Frames in an RTP Packet 448 A TSVCIS RTP packet payload consists of zero or more consecutive 449 TSVCIS coder frames (each consisting of MELPe 2400 and TSVCIS coder 450 data), with the oldest frame first, followed by zero or one MELPe 451 comfort noise frame. The presence of a comfort noise frame can be 452 determined by its rate code bits in its last octet. 454 The default packetization interval is one coder frame (22.5, 67.5, or 455 90 ms) according to the coder bitrate (2400, 1200, or 600 bps). For 456 some applications, a longer packetization interval is used to reduce 457 the packet rate. 459 A TSVCIS RTP packet without coder and comfort noise frames MAY be 460 used periodically by an endpoint to indicate connectivity by an 461 otherwise idle receiver. 463 TSVCIS coder frames in a single RTP packet MAY have varying TSVCIS 464 parameter octet counts. Its packed parameter octet count (length) is 465 indicated in the trailing byte(s). All MELPe frames in a single RTP 466 packet MUST be of the same coder bitrate. For all MELPe coder 467 frames, the coder rate bits in the trailing byte identify the 468 contents and length as per Table 1. 470 It is important to observe that senders have the following additional 471 restrictions: 473 Senders SHOULD NOT include more TSVCIS or MELPe frames in a single 474 RTP packet than will fit in the MTU of the RTP transport protocol. 476 Frames MUST NOT be split between RTP packets. 478 It is RECOMMENDED that the number of frames contained within an RTP 479 packet be consistent with the application. For example, in telephony 480 and other real-time applications where delay is important, then the 481 fewer frames per packet the lower the delay, whereas for bandwidth- 482 constrained links or delay-insensitive streaming messaging 483 applications, more than one frame per packet or many frames per 484 packet would be acceptable. 486 Information describing the number of frames contained in an RTP 487 packet is not transmitted as part of the RTP payload. The way to 488 determine the number of TSVCIS/MELPe frames is to identify each frame 489 type and length thereby counting the total number of octets within 490 the RTP packet. 492 3.4. Congestion Control Considerations 494 The target bitrate of TSVCIS can be adjusted at any point in time, 495 thus allowing congestion management. Furthermore, the amount of 496 encoded speech or audio data encoded in a single packet can be used 497 for congestion control, since the packet rate is inversely 498 proportional to the packet duration. A lower packet transmission 499 rate reduces the amount of header overhead but at the same time 500 increases latency and loss sensitivity, so it ought to be used 501 with care. 503 Since UDP does not provide congestion control, applications that use 504 RTP over UDP SHOULD implement their own congestion control above the 505 UDP layer [RFC8085] and MAY also implement a transport circuit 506 breaker [RFC8083]. Work in the RMCAT working group [RMCAT] describes 507 the interactions and conceptual interfaces necessary between the 508 application components that relate to congestion control, including 509 the RTP layer, the higher-level media codec control layer, and the 510 lower-level transport interface, as well as components dedicated to 511 congestion control functions. 513 4. Payload Format Parameters 515 This RTP payload format is identified using the TSVCIS media subtype, 516 which is registered in accordance with RFC 4855 [RFC4855] and per the 517 media type registration template from RFC 6838 [RFC6838]. 519 4.1. Media Type Definitions 521 Type name: audio 523 Subtype name: TSVCIS 525 Required parameters: N/A 527 Optional parameters: 529 ptime: the recommended length of time (in milliseconds) 530 represented by the media in a packet. It SHALL use the nearest 531 rounded-up ms integer packet duration. For TSVCIS, this 532 corresponds to the following values: 23, 45, 68, 90, 112, 135, 533 156, and 180. Larger values can be used as long as they are 534 properly rounded. See Section 6 of RFC 4566 [RFC4566]. 536 maxptime: the maximum length of time (in milliseconds) that can be 537 encapsulated in a packet. It SHALL use the nearest rounded-up 538 ms integer packet duration. For TSVCIS, this corresponds to 539 the following values: 23, 45, 68, 90, 112, 135, 156, and 180. 540 Larger values can be used as long as they are properly rounded. 541 See Section 6 of RFC 4566 [RFC4566]. 543 bitrate: specifies the MELPe coder bitrates supported. Possible 544 values are a comma-separated list of rates from the following 545 set: 2400, 1200, 600. The modes are listed in order of 546 preference; first is preferred. If "bitrate" is not present, 547 the fixed coder bitrate of 2400 MUST be used. 549 tcmax: specifies the TSVCIS maximum value for TC supported or 550 desired ranging from 1 to 255. If "tcmax" is not present, a 551 default value of 35 is used. 553 Encoding considerations: This media subtype is framed and binary; see 554 Section 4.8 of RFC 6838 [RFC6838]. 556 Security considerations: Please see Section 8 of RFC XXXX. 558 [EDITOR NOTE - please replace XXXX with the RFC number of this 559 document.] 561 Interoperability considerations: N/A 563 Published specification: [TSVCIS] 565 Applications that use this media type: N/A 567 Fragment identifier considerations: N/A 569 Additional information: 571 Clock Rate (Hz): 8000 572 Channels: 1 574 Deprecated alias names for this type: N/A 576 Magic number(s): N/A 577 File extension(s): N/A 579 Macintosh file type code(s): N/A 581 Person & email address to contact for further information: 583 Victor Demjanenko, Ph.D. 584 VOCAL Technologies, Ltd. 585 520 Lee Entrance, Suite 202 586 Buffalo, NY 14228 587 United States of America 588 Phone: +1 716 688 4675 589 Email: victor.demjanenko@vocal.com 591 Intended usage: COMMON 593 Restrictions on usage: The media subtype depends on RTP framing and 594 hence is only defined for transfer via RTP [RFC3550]. Transport 595 within other framing protocols is not defined at this time. 597 Author: Victor Demjanenko 599 Change controller: IETF, contact 601 Provisional registration? (standards tree only): No 603 4.2. Mapping to SDP 605 The mapping of the above-defined payload format media subtype and its 606 parameters SHALL be done according to Section 3 of RFC 4855 607 [RFC4855]. 609 The information carried in the media type specification has a 610 specific mapping to fields in the Session Description Protocol (SDP) 611 [RFC4566], which is commonly used to describe RTP sessions. When SDP 612 is used to specify sessions employing the TSVCIS codec, the mapping 613 is as follows: 615 o The media type ("audio") goes in SDP "m=" as the media name. 617 o The media subtype (payload format name) goes in SDP "a=rtpmap" as 618 the encoding name. 620 o The parameter "bitrate" goes in the SDP "a=fmtp" attribute by 621 copying it as a "bitrate=" string. 623 o The parameter "tcmax" goes in the SDP "a=fmtp" attribute by 624 copying it as a "tcmax=" string. 626 o The parameters "ptime" and "maxptime" go in the SDP "a=ptime" and 627 "a=maxptime" attributes, respectively. 629 When conveying information via SDP, the encoding name SHALL be 630 "TSVCIS" (the same as the media subtype). 632 An example of the media representation in SDP for describing TSVCIS 633 might be: 635 m=audio 49120 RTP/AVP 96 636 a=rtpmap:96 TSVCIS/8000 638 The optional media type parameter "bitrate", when present, MUST be 639 included in the "a=fmtp" attribute in the SDP, expressed as a media 640 type string in the form of a semicolon-separated list of 641 parameter=value pairs. The string "value" can be one or more of 642 2400, 1200, and 600, separated by commas (where each bitrate value 643 indicates the corresponding MELPe coder). An example of the media 644 representation in SDP for describing TSVCIS when all three coder 645 bitrates are supported might be: 647 m=audio 49120 RTP/AVP 96 648 a=rtpmap:96 TSVCIS/8000 649 a=fmtp:96 bitrate=2400,600,1200 651 The optional media type parameter "tcmax", when present, MUST be 652 included in the "a=fmtp" attribute in the SDP, expressed as a media 653 type string in the form of a semicolon-separated list of 654 parameter=value pairs. The string "value" is an integer number in 655 the range of 1 to 255 representing the maximum number of TSVCIS 656 parameter octets supported. An example of the media representation 657 in SDP for describing TSVCIS with a maximum of 101 octets supported 658 is as follows: 660 m=audio 49120 RTP/AVP 96 661 a=rtpmap:96 TSVCIS/8000 662 a=fmtp:96 tcmax=101 664 The parameter "ptime" cannot be used for the purpose of specifying 665 the TSVCIS operating mode, due to the fact that for certain values it 666 will be impossible to distinguish which mode is about to be used 667 (e.g., when ptime=68, it would be impossible to distinguish if the 668 packet is carrying one frame of 67.5 ms or three frames of 22.5 ms). 670 Note that the payload format (encoding) names are commonly shown in 671 upper case. Media subtypes are commonly shown in lower case. These 672 names are case insensitive in both places. Similarly, parameter 673 names are case insensitive in both the media subtype name and the 674 default mapping to the SDP a=fmtp attribute. 676 4.3. Declarative SDP Considerations 678 For declarative media, the "bitrate" parameter specifies the possible 679 bitrates used by the sender. Multiple TSVCIS rtpmap values (such as 680 97, 98, and 99, as used below) MAY be used to convey TSVCIS-coded 681 voice at different bitrates. The receiver can then select an 682 appropriate TSVCIS codec by using 97, 98, or 99. 684 m=audio 49120 RTP/AVP 97 98 99 685 a=rtpmap:97 TSVCIS/8000 686 a=fmtp:97 bitrate=2400 687 a=rtpmap:98 TSVCIS/8000 688 a=fmtp:98 bitrate=1200 689 a=rtpmap:99 TSVCIS/8000 690 a=fmtp:99 bitrate=600 692 For declarative media, the "tcmax" parameter specifies the maximum 693 number of TSVCIS packed parameter octets used by the sender or the 694 sender's communications channel. 696 4.4. Offer/Answer SDP Considerations 698 In the Offer/Answer model [RFC3264], "bitrate" is a bidirectional 699 parameter. Both sides MUST use a common "bitrate" value or values. 700 The offer contains the bitrates supported by the offerer, listed in 701 its preferred order. The answerer MAY agree to any bitrate by 702 listing the bitrate first in the answerer response. Additionally, 703 the answerer MAY indicate any secondary bitrate or bitrates that it 704 supports. The initial bitrate used by both parties SHALL be the 705 first bitrate specified in the answerer response. 707 For example, if offerer bitrates are "2400,600" and answer bitrates 708 are "600,2400", the initial bitrate is 600. If other bitrates are 709 provided by the answerer, any common bitrate between the offer and 710 answer MAY be used at any time in the future. Activation of these 711 other common bitrates is beyond the scope of this document. 713 The use of a lower bitrate is often important for a case such as when 714 one endpoint utilizes a bandwidth-constrained link (e.g., 1200 bps 715 radio link or slower), where only the lower coder bitrate will work. 717 In the Offer/Answer model [RFC3264], "tcmax" is a bidirectional 718 parameter. Both sides SHOULD use a common "tcmax" value. The offer 719 contains the tcmax supported by the offerer. The answerer MAY agree 720 to any tcmax equal or less than this value by stating the desired 721 tcmax in the answerer response. The answerer alternatively MAY 722 identify its own tcmax and rely on TSVCIS ignoring any augmented data 723 it cannot use. 725 5. Discontinuous Transmissions 727 A primary application of TSVCIS is for radio communications of voice 728 conversations, and discontinuous transmissions are normal. When 729 TSVCIS is used in an IP network, TSVCIS RTP packet transmissions may 730 cease and resume frequently. RTP synchronization source (SSRC) 731 sequence number gaps indicate lost packets to be filled by Packet 732 Loss Concealment (PLC), while abrupt loss of RTP packets indicates 733 intended discontinuous transmissions. Resumption of voice 734 transmission SHOULD be indicated by the RTP marker bit (M) set to 1. 736 If a TSVCIS coder so desires, it may send a MELPe comfort noise frame 737 as per Appendix B of [SCIP210] prior to ceasing transmission. A 738 receiver may optionally use comfort noise during its silence periods. 739 No SDP negotiations are required. 741 6. Packet Loss Concealment 743 TSVCIS packet loss concealment (PLC) uses the special properties and 744 coding for the pitch/voicing parameter of the MELPe 2400 bps coder. 745 The PLC erasure indication utilizes any of the errored encodings of a 746 non-voiced frame as identified in Table 1 of [MELPE]. For the sake of 747 simplicity, it is preferred that a code value of 3 for the 748 pitch/voicing parameter be used. Hence, set bits P0 and P1 to one 749 and bits P2, P3, P4, P5, and P6 to zero. 751 When using PLC in 1200 bps or 600 bps mode, the MELPe 2400 bps 752 decoder is called three or four times, respectively, to cover the 753 loss of a low bitrate MELPe frame. 755 7. IANA Considerations 757 This memo requests that IANA registers TSVCIS as specified in Section 758 4.1. The media type is also requested to be added to the IANA 759 registry for "RTP Payload Format MIME types" 760 (http://www.iana.org/assignments/rtp-parameters). 762 8. Security Considerations 764 RTP packets using the payload format defined in this specification 765 are subject to the security considerations discussed in the RTP 766 specification [RFC3550] and in any applicable RTP profile such as 767 RTP/AVP [RFC3551], RTP/AVPF [RFC4585], RTP/SAVP [RFC3711], or 768 RTP/SAVPF [RFC5124]. However, as discussed in [RFC7202], it is not 769 an RTP payload format's responsibility to discuss or mandate what 770 solutions are used to meet such basic security goals as 771 confidentiality, integrity, and source authenticity for RTP in 772 general. This responsibility lies with anyone using RTP in an 773 application. They can find guidance on available security mechanisms 774 and important considerations in [RFC7201]. Applications SHOULD use 775 one or more appropriate strong security mechanisms. The rest of this 776 section discusses the security-impacting properties of the payload 777 format itself. 779 This RTP payload format and the TSVCIS decoder, to the best of our 780 knowledge, do not exhibit any significant non-uniformity in the 781 receiver-side computational complexity for packet processing and thus 782 are unlikely to pose a denial-of-service threat due to the receipt of 783 pathological data. Additionally, the RTP payload format does not 784 contain any active content. 786 Please see the security considerations discussed in [RFC6562] 787 regarding Voice Activity Detect (VAD) and its effect on bitrates. 789 10. References 791 10.1. Normative References 793 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 794 Requirement Levels", BCP 14, RFC 2119, 795 DOI 10.17487/RFC2119, March 1997, 796 . 798 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 799 2119 Key Words", BCP 14, RFC 8174, May 2017, 800 . 802 [RFC2736] Handley, M. and C. Perkins, "Guidelines for Writers of RTP 803 Payload Format Specifications", BCP 36, RFC 2736, 804 DOI 10.17487/RFC2736, December 1999, 805 . 807 [RFC8088] Westerlund, M., "How to Write an RTP Payload Format", 808 RFC 8088, DOI 10.17487/RFC8088, May 2017, 809 . 811 [RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model 812 with Session Description Protocol (SDP)", RFC 3264, 813 DOI 10.17487/RFC3264, June 2002, 814 . 816 [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. 817 Jacobson, "RTP: A Transport Protocol for Real-Time 818 Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, 819 July 2003, . 821 [RFC3551] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and 822 Video Conferences with Minimal Control", STD 65, RFC 3551, 823 DOI 10.17487/RFC3551, July 2003, 824 . 826 [RFC8130] Demjanenko, V., and D. Satterlee, "RTP Payload Format for 827 the Mixed Excitation Linear Prediction Enhanced (MELPe) 828 Codec", RFC 8130, DOI 10.tbd/RFC8130, March 2017, 829 . 831 [RFC3711] Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K. 832 Norrman, "The Secure Real-time Transport Protocol (SRTP)", 833 RFC 3711, DOI 10.17487/RFC3711, March 2004, 834 . 836 [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session 837 Description Protocol", RFC 4566, DOI 10.17487/RFC4566, 838 July 2006, . 840 [RFC4855] Casner, S., "Media Type Registration of RTP Payload 841 Formats", RFC 4855, DOI 10.17487/RFC4855, February 2007, 842 . 844 [RFC5124] Ott, J. and E. Carrara, "Extended Secure RTP Profile for 845 Real-time Transport Control Protocol (RTCP)-Based Feedback 846 (RTP/SAVPF)", RFC 5124, DOI 10.17487/RFC5124, 847 February 2008, . 849 [RFC6562] Perkins, C. and JM. Valin, "Guidelines for the Use of 850 Variable Bit Rate Audio with Secure RTP", RFC 6562, 851 DOI 10.17487/RFC6562, March 2012, 852 . 854 [RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type 855 Specifications and Registration Procedures", BCP 13, 856 RFC 6838, DOI 10.17487/RFC6838, January 2013, 857 . 859 [RFC8083] Perkins, C. and V. Singh, "Multimedia Congestion Control: 860 Circuit Breakers for Unicast RTP Sessions", RFC 8083, 861 DOI 10.17487/RFC8083, March 2017, 862 . 864 [RFC8085] Eggert, L., Fairhurst, G., and G. Shepherd, "UDP Usage 865 Guidelines", RFC 8085, DOI 10.17487/RFC8085, March 2017, 866 . 868 [NRLVDR] Heide, D., Cohen, A., Lee, Y., and T. Moran, "Universal 869 Vocoder Using Variable Data Rate Vocoding", Naval Research 870 Lab, NRL/FR/5555-13-10,239, June 2013. 872 [MELP] Department of Defense Telecommunications Standard, 873 "Analog-to-Digital Conversion of Voice by 2,400 Bit/Second 874 Mixed Excitation Linear Prediction (MELP)", MIL-STD-3005, 875 December 1999. 877 [MELPE] North Atlantic Treaty Organization (NATO), "The 600 Bit/S, 878 1200 Bit/S and 2400 Bit/S NATO Interoperable Narrow Band 879 Voice Coder", STANAG No. 4591, January 2006. 881 [SCIP210] National Security Agency, "SCIP Signaling Plan", SCIP-210, 882 December 2007. 884 10.2. Informative References 886 [TSVCIS] National Security Agency, "Tactical Secure Voice 887 Cryptographic Interoperability Specification (TSVCIS) 888 Version 3.1", NSA 09-01A, March 2019. 890 [RFC4585] Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey, 891 "Extended RTP Profile for Real-time Transport Control 892 Protocol (RTCP)-Based Feedback (RTP/AVPF)", RFC 4585, 893 DOI 10.17487/RFC4585, July 2006, 894 . 896 [RFC7201] Westerlund, M. and C. Perkins, "Options for Securing RTP 897 Sessions", RFC 7201, DOI 10.17487/RFC7201, April 2014, 898 . 900 [RFC7202] Perkins, C. and M. Westerlund, "Securing the RTP 901 Framework: Why RTP Does Not Mandate a Single Media 902 Security Solution", RFC 7202, DOI 10.17487/RFC7202, 903 April 2014, . 905 [RMCAT] IETF, RTP Media Congestion Avoidance Techniques (rmcat) 906 Working Group, 907 . 909 Authors' Addresses 911 Victor Demjanenko, Ph.D. 913 VOCAL Technologies, Ltd. 914 520 Lee Entrance, Suite 202 915 Buffalo, NY 14228 916 United States of America 918 Phone: +1 716 688 4675 919 Email: victor.demjanenko@vocal.com 921 John Punaro 922 VOCAL Technologies, Ltd. 923 520 Lee Entrance, Suite 202 924 Buffalo, NY 14228 925 United States of America 927 Phone: +1 716 688 4675 928 Email: john.punaro@vocal.com 930 David Satterlee 931 VOCAL Technologies, Ltd. 932 520 Lee Entrance, Suite 202 933 Buffalo, NY 14228 934 United States of America 936 Phone: +1 716 688 4675 937 Email: david.satterlee@vocal.com