VoIP.info Diagnostic

Asterisk PJSIP 421 Extension Required: trace the missing option tag

Identify the rejecting PJSIP leg, Require token and loaded endpoint policy before advertising 100rel or changing unrelated media settings.

Reviewed 2026-09-28RFC 3261, RFC 3262 and current Asterisk res_pjsip and debugging documentation reviewed September 28, 2026; no PBX, endpoint, proxy, 100rel policy, provisional response, PRACK exchange or live transaction testedAdvancedDocumentation based · not lab tested

Bind 421 to one request and PJSIP leg

Record the timestamp and timezone, symptom, request method and Request-URI, PJSIP endpoint or trunk, Call-ID, CSeq, top Via branch, every Supported token, responder and every Require token in the 421 response. Determine whether Asterisk generated 421 for an inbound request or received it on an outbound leg. Do not assign the response to a phone, Asterisk or a provider from a display label alone.

With authorization, enable pjsip set logger on only for one bounded reproduction, then disable it and protect identities, authentication material, numbers and bodies. Correlate Asterisk's inbound and outbound channels without treating the back-to-back user agent as one end-to-end transaction.

Find the required token and prove real capability

Compare Require in the response with Supported in the original request byte-for-byte and look up the token in the current IANA registry. Establish which endpoint, provider, SBC, application or template requires the extension and why baseline SIP is insufficient. A 421 without Require, a token already advertised or an unregistered token remains interoperability evidence.

Do not fix the status by adding a header alone. Prove that the sending endpoint implements the extension's required behavior and that the loaded configuration will advertise it on the affected leg. Global Supported injection can falsely claim capability and shift the incident into a later transaction.

Inspect Asterisk 100rel policy when that token is named

Current res_pjsip documentation gives the endpoint 100rel option four behaviors: no, required, peer_supported and yes. As a UAS, required rejects an incoming request that did not advertise 100rel with 421; as a UAC it places 100rel in Require on outgoing requests. Other modes advertise, refuse or use reliable provisional responses under their documented conditions.

Inspect the loaded endpoint object and the actually deployed Asterisk release before changing the setting. In FreePBX, retain GUI and module ownership rather than editing generated PJSIP configuration as a durable fix. A policy on one endpoint does not prove the same policy on a provider or phone leg.

Follow the reliable provisional exchange

RFC 3262 uses 100rel for reliable provisional responses and PRACK. When 100rel is required, preserve the new request's Supported value, each reliable 18x response, RSeq value, PRACK request, RAck correlation, response to PRACK and final INVITE response. Capability advertisement alone is incomplete if the exchange does not follow.

Keep missing or mismatched PRACK, 408 or 481 responses and final call failure distinct from the original 421. Early-media audio can coexist with this negotiation, but it does not turn 100rel into an SDP, codec, RTP, NAT or session-timer setting.

Correct narrowly and test required and baseline paths

Correct only the demonstrated owner: an endpoint that should truthfully advertise the extension, an Asterisk endpoint policy that unnecessarily requires it, or a peer whose requirement conflicts with the agreed service. Preserve the prior value and rollback trigger. Do not weaken a genuinely required semantic or advertise unsupported behavior just to remove 421.

Repeat one authorized request and confirm Supported, Require, provisional responses, PRACK where applicable, the final response and user-visible result. Also verify the explicit failure or fallback expected for a peer that truly lacks the extension. No PBX, endpoint, proxy, option tag, 100rel policy, provisional response, PRACK exchange, media path or live call was tested for this guide.

Asterisk CLI — bounded 421 evidence
pjsip show endpoint <endpoint>
pjsip set logger on
# Reproduce one authorized request and capture Supported, 421 and Require.
pjsip set logger off

Sources & applicability

Primary references for the technical details above. Operational examples and planning checklists are VoIP.info editorial guidance.

Examples require adaptation to your topology. No live PBX or hardware testing is claimed.