Packetizer

Whether to Discard RTP Packets with Invalid Packet Types (Q8)


The information in this article applies to: H.323, H.225.0, RTP (RFC 3550)

Some implementations discard RTP packets whose payload type is incorrect, either implied by the media type, such as 34 for H.263, or specified in the dynamicRTPPayloadType field, e.g., 96. However, some implementations completely ignore the payload type and accept all packets in the stream. I exchanged email about this with the author of the IETF RTP specification, Henning Schulzrinne. He said that it's an absolute requirement that endpoints discard packets with unexpected payload types so that, for example, RTP DTMF packets could be injected into a G.723.1 stream, and those endpoints that can process the DTMF will do so while those that cannot will simply discard the DTMF packets. If endpoints don't discard packets with unexpected payload types, we will have backward-compatibility problems in the future.

Okay, so an endpoint should discard packets with bad payload types, right? That would assure compatibility with future augmentations to a stream's RTP profile. However, many H.323 endpoints currently do not use the correct packet type in their RTP headers, so a compliant endpoint would not be interoperable with these, albeit non-compliant, endpoints. What to do? Beats me. The implementor is between a rock and a hard place on this one. I just wanted you to be aware of the issue.