PRACK is defined in RFC 3262: Reliability of Provisional Responses in the Session Initiation Protocol (SIP)
The PRACK request plays the same role as ACK, but for provisional responses. There is an important difference, however. PRACK is a normal SIP message, like BYE. As such, its own reliability is ensured hop-by-hop through each stateful proxy. Also like BYE, but unlike ACK, PRACK has its own response. If this were not the case, the PRACK message could not traverse proxy servers compliant to RFC 2543.
Numerous implementation problems seen in the field
A SIP UA indicates support for this standard by including a "Supported: 100rel" or "Require: 100rel" as a SIP header. Several major SIP stacks — including the one in IOS and on PolyCom SoundPoint IP 500 phones — have shown problems with it, at least in previous versions. The SIP headers claim to support it or require it, but when you send them a non-100 1xx message, they don't PRACK it.
The PRACK request plays the same role as ACK, but for provisional responses. There is an important difference, however. PRACK is a normal SIP message, like BYE. As such, its own reliability is ensured hop-by-hop through each stateful proxy. Also like BYE, but unlike ACK, PRACK has its own response. If this were not the case, the PRACK message could not traverse proxy servers compliant to RFC 2543.
Numerous implementation problems seen in the field
A SIP UA indicates support for this standard by including a "Supported: 100rel" or "Require: 100rel" as a SIP header. Several major SIP stacks — including the one in IOS and on PolyCom SoundPoint IP 500 phones — have shown problems with it, at least in previous versions. The SIP headers claim to support it or require it, but when you send them a non-100 1xx message, they don't PRACK it.