RTP Payload Format for Tactical Secure Voice Cryptographic Interoperability Specification (TSVCIS) Codec
Extracted elements (32)
The number of frames in an RTP packet is not transmitted explicitly; the receiver determines frame count by identifying each frame type and length from the rate code bits, then summing octets across the packet. This avoids a redundant count field.
The preferred TSVCIS packing format uses MTC = TC − 15 (minimum parameter set is 15 octets) to extend the 6-bit MTC field's effective range to 77 octets; the alternate two-trailing-byte format accommodates all other NRL VDR configurations without an upper bound.
TSVCIS is designed as an augmentation to MELPe rather than a standalone codec: a complete TSVCIS speech frame always pairs TSVCIS augmented data with temporally matched MELPe 2400 bps parameters, enabling graceful fallback to MELPe alone on severely bandwidth-constrained links.
CODB for MELPe 600 bps MAY deviate from Table 1 when bit 55 is used as an alternating 1/0 end-to-end framing bit; frame decoding remains distinct because CODA=0 alone identifies a 7-byte frame, and 600 bps can be deduced from the RTP timestamp and SDP negotiation.
The SDP 'ptime' parameter cannot be used to specify the TSVCIS operating mode because certain values are ambiguous; for example, ptime=68 cannot distinguish one 67.5 ms frame from three 22.5 ms frames.
TSVCIS RTP packetization of MELPe follows RFC 8130, with RFC 8130 recommendations now treated as requirements. The bits previously labeled RSVA, RSVB, RSVC in RFC 8130 SHOULD be filled with rate code bits CODA, CODB, CODC as defined in Table 1.
Any unfilled bits in the last octet of a byte-packed TSVCIS parameter field MUST be filled with zero. Parameters may be split between octets with the most significant bits in the earlier octet.
Applications using RTP over UDP SHOULD implement their own congestion control above the UDP layer per RFC 8085, and MAY also implement a transport circuit breaker per RFC 8083. TSVCIS supports congestion management by adjusting the target bitrate or frames per packet.
Frames MUST NOT be split between RTP packets. All MELPe frames within a single RTP packet MUST be of the same coder bitrate.
If the 'bitrate' parameter is absent from the SDP fmtp attribute, the fixed MELPe coder bitrate of 2400 bps MUST be used.
If the optional 'bitrate' or 'tcmax' parameters are present, they MUST be included in the SDP 'a=fmtp' attribute as semicolon-separated parameter=value pairs. When 'tcmax' is absent, a default value of 35 is used.
In the Offer/Answer model, 'bitrate' is bidirectional: both sides MUST use a common value. The initial bitrate SHALL be the first bitrate specified in the answerer's response; any other common bitrate from the offer/answer exchange MAY be used at any future time.
In the Offer/Answer model, 'tcmax' is bidirectional: both sides SHOULD use a common tcmax value. The answerer MAY agree to any tcmax equal to or less than the offerer's value, or MAY state its own tcmax and rely on TSVCIS ignoring augmented data it cannot use.
Senders SHOULD NOT include more TSVCIS or MELPe frames in a single RTP packet than will fit in the MTU of the RTP transport protocol.
The RTP timestamp MUST be in units of 1/8000 of a second, consistent with the TSVCIS codec's 8 kHz sampling rate clock and its frame durations of 22.5, 67.5, or 90 ms.
The TSVCIS Modified Count (MTC) MUST be reduced by 15 from the full octet count (TC), i.e., MTC = TC − 15, accommodating a maximum of 77 parameter octets in the preferred format.
TSVCIS augmented speech data (packed parameters) MUST be placed immediately after the corresponding MELPe 2400 bps payload in the same RTP packet.
A TSVCIS RTP packet payload consists of zero or more consecutive TSVCIS coder frames (each pairing MELPe 2400 data with TSVCIS augmented data), oldest frame first, optionally followed by zero or one MELPe comfort noise frame. An empty packet (no frames) MAY be sent periodically to indicate connectivity.
For discontinuous transmissions, resumption of voice SHOULD be indicated by setting the RTP marker bit (M) to 1. SSRC sequence number gaps indicate lost packets for PLC, while abrupt RTP packet loss indicates intended silence. A MELPe comfort noise frame MAY be sent before ceasing transmission.
Packet Loss Concealment (PLC) uses MELPe 2400 bps pitch/voicing parameter: the erasure indication is any errored encoding of a non-voiced frame; preferred code is value 3 (P0=P1=1, P2–P6=0). For 1200 or 600 bps mode, the MELPe 2400 bps decoder is called 3 or 4 times respectively to cover the lost frame.
Rate code bits CODA, CODB, and CODC in the trailing byte of each frame identify the frame type and length: 2400 bps (0,0,N/A, 7 octets), 1200 bps (1,0,0, 11 octets), 600 bps (0,1,N/A, 7 octets), comfort noise (1,0,1, 2 octets), TSVCIS data (1,1,N/A, variable).
The audio/TSVCIS media type defines required parameter Clock Rate = 8000 Hz and optional parameters: ptime and maxptime (packet duration in ms, rounded up), bitrate (comma-separated list of MELPe rates 2400/1200/600 in preference order), tcmax (maximum TSVCIS packed parameter octets, 1–255).
IANA has registered the 'audio/TSVCIS' media subtype in the 'RTP Payload Format Media Types' registry per RFC 4855 and RFC 6838. Required clock rate is 8000 Hz; the media type is framed and binary and is only defined for transfer via RTP.
Applications using this RTP payload format SHOULD use one or more appropriate strong security mechanisms such as SRTP (RFC 3711), VPNs, FIPS 140 link encryptors, or Type 1 Ethernet encryptors. Security responsibility lies with the application, not the payload format.
Implementations using Voice Activity Detection (VAD) should consult RFC 6562 regarding its effect on variable bitrates and the resulting security implications when used with Secure RTP.
The TSVCIS RTP payload format and decoder do not exhibit significant non-uniformity in receiver-side computational complexity for packet processing and are unlikely to pose a denial-of-service threat from pathological data. The payload contains no active content.
In the alternate TSVCIS packing format (for TC > 77 or any NRL VDR configuration), two trailing bytes are appended: the penultimate byte contains the full octet count TC (1–255; zero is reserved), and the final byte contains CODA=1, CODB=1, and six bits all set to one.
In the preferred TSVCIS packing format (for TC ≤ 77 octets), a single trailing octet is appended after the TC packed parameter octets containing CODA=1, CODB=1, and a 6-bit Modified Count (MTC = TC − 15). The MTC value of all-ones (63) is reserved for the alternate format.
The MELPe 1200 bps frame occupies 11 octets (81 speech bits plus three rate code bits CODA=1, CODB=0, CODC=0 and four RSV0 bits set to zero in the final octet). CODA, CODB, CODC, and RSV0 MUST be filled with 1, 0, 0, and 0 respectively.
The MELPe 2400 bps frame occupies 7 octets (54 speech bits plus CODA=0 and CODB rate code bits in the final octet). CODA MUST be 0; CODB SHOULD be 0 but MAY carry an end-to-end framing bit.
The MELPe 600 bps frame occupies 7 octets (54 speech bits plus CODA=0 and CODB rate code bits). CODA MUST be 0; CODB SHOULD be 1 but MAY carry an end-to-end framing bit.
The MELPe comfort noise frame occupies 2 octets (13 bits: 10 speech bits plus CODA=1, CODB=0, CODC=1 rate code bits). CODA, CODB, and CODC MUST be filled with 1, 0, and 1 respectively.