SIP - PRACK
Introduction to PRACK
SIP (Session Initiation Protocol) is a signalling protocol used for initiating, maintaining, modifying and terminating real-time sessions that involve video, voice, messaging and other communications between two or more endpoints on IP networks.
PRACK (Provisional Response Acknowledgement) is defined in RFC 3262, "Reliability of Provisional Responses in the Session Initiation Protocol (SIP)". This RFC was published by the Internet Engineering Task Force (IETF) in June 2002.
PRACK is a SIP extension that allows for the reliable delivery of provisional responses (1xx) in a SIP call. By default, provisional responses in a transaction are not acknowledged. PRACK is used to ensure that provisional responses (generally excluding 100 trying) are received by the client and to handle any lost or delayed responses especially when communicating with the PSTN. PRACK works by sending a PRACK request, which is a SIP request similar to an INVITE or ACK, to acknowledge receipt of a provisional response.
What to expect with Telnyx?
Telnyx supports PRACK for inbound and outbound calls through our network.
When a SIP INVITE message is sent by a client with the "Supported" header containing the value "100rel", it indicates that the sender supports PRACK.
In this case, Telnyx will send provisional responses with RSEQ header values and expects the customer's client to respond with a PRACK. However, if the customer's client sends "100rel" as a value in the "Supported" header but doesn't actually support or send PRACK, Telnyx will eventually time the call out with a 504 gateway timeout response and the reason header will contain "prack timeout" as the reason for the call ending.
How do I setup Prack?
Customers can also enable PRACK on their SIP Connections inbound settings, specifically under "Advanced" as seen in the attached picture below.
This means that for any inbound calls the customer receives, Telnyx will send a SIP INVITE with "100rel" as a value in the "Supported" header. If the customer's device supports PRACK, Telnyx expects to receive provisional responses containing RSEQ header and values, which Telnyx will then PRACK.
In summary, PRACK is a SIP extension used to ensure the reliable delivery of provisional responses in a SIP call. Telnyx supports PRACK and expects customers' devices to support it as well. If a customer's device does not support PRACK, outbound calls will time out with a 504 gateway timeout response. Customers can also enable PRACK on their SIP Connection within their Mission Control portal account for inbound calls.
Further Insightful Reading
DUCKS GO QUACK. SIP GOES PRACK by Andrew J Prokop.
What the Prack?! by Lalo Nunez.