UC LabFree University
Offline

Progress

RFC 3262

PRACK

Reliable provisional responses need PRACK. A lost 183 otherwise never settles the early offer.

100relCallerCalleeINVITE183PRACK200

  1. INVITE โ€” Supported or Require includes 100rel.
  2. 183 โ€” RSeq is set. The 183 is retransmitted until PRACK.
  3. PRACK โ€” RAck names the RSeq and the INVITE CSeq.
  4. 200 โ€” That 200 is for the PRACK, not the call.

Require: 100rel on a hop that cannot send PRACK fails the call. Match the requirement on both sides of a B2BUA before you change codecs.

Sources

Study card carried forward

SIP ยท RFC 3262

Reliable provisional responses

Ordinary 1xx responses are not reliable. PRACK is the acknowledgement that makes a chosen provisional response reliable. The option tag is 100rel.

Ladder: INVITE with Supported 100rel, 183 with RSeq, PRACK with RAck, 200 OK for the PRACK, 200 OK for the INVITE, ACK.
Two different 200 OKs appear. Read the CSeq method, or the story around them, before you decide what was acknowledged.

On a phone, swipe a wide ladder sideways. The steps below repeat the same sequence.

Sequence

  1. INVITE โ€” Alice to Bob. Supported: 100rel, SDP offer
  2. 183 + RSeq โ€” Bob to Alice. Require: 100rel, SDP answer
  3. PRACK โ€” Alice to Bob. RAck echoes RSeq and CSeq
  4. 200 OK โ€” Bob to Alice. This 200 answers the PRACK
  5. 200 OK โ€” Bob to Alice. This 200 answers the INVITE
  6. ACK โ€” Alice to Bob. Dialog confirmed

The handshake

Alice advertises support with Supported: 100rel. If she requires the feature, she sends Require: 100rel and a peer that does not support it should reject the INVITE.

Bob sends 183 with Require: 100rel and a RSeq number. He retransmits that 183 until a matching PRACK arrives. Alice's PRACK carries RAck set to the RSeq, the CSeq number, and the method, which is INVITE. Bob answers the PRACK with its own 200 OK. That 200 is not the answer to the INVITE. The INVITE is still outstanding until a later 200 OK, which Alice then ACKs in the normal way.

Offer and answer

On this ladder the offer was in the INVITE and the answer is in the reliable 183, which is what you want when early media must start before answer. Other legal shapes exist: a reliable 183 can carry the offer when the INVITE had none, and the PRACK can carry the answer. Do not open a new offer until the previous one has an answer (RFC 6337 discusses offer/answer usage in SIP).

Sources

  • RFC 3262, reliability of provisional responses (PRACK)
  • RFC 6337, usage of the offer/answer model with SIP
  • RFC 3264, the offer/answer model itself

Download exports