Endpoint-Initiated Keep-Alive Negotiation
Endpoint-initiated Keep-Alive negotiation requires the presence of the keep parameter in the Via header of Registration requests and responses issued and received by a SIP endpoint. As defined in RFC 6223, keep is
A SIP Via header field parameter that a SIP entity can insert in the topmost Via header field that it adds to the request, to explicitly indicate willingness to send keep-alives towards its adjacent downstream SIP entity. A SIP entity can add a parameter value to the keep parameter in a response to explicitly indicate willingness to receive keep-alives from its adjacent upstream SIP entity.
While RFC 6223 allows the presence of the keep parameter in either REGISTER or INVITE requests and responses, the current implementation, is registration-based. keep parameters contained in methods other than REGISTER are ignored.
As shown in the following sample registration exchange, the SIP endpoint signals its willingness to exchange Keep-Alive messages by placing an unvalued keep parameter in the SIP Via header of a REGISTER request.
REGISTER sip:512@172.16.101.23:5060 SIP/2.0 Via: SIP/2.0/UDP 172.16.101.38:5070;branch=dd1;keep From: "512" <sip:512@172.16.101.38:5070;transport=UDP>;tag=443322 To: "512" <sip:512@172.16.101.38:5070> Call-ID:1-14400@172.16.101.38 CSeq: 1 REGISTER Max-Forwards: 70 Contact: "512" <sip:512@172.16.101.38:5070>;expires:18000 User-Agent: ADTRAN_Total_Access_908e_(2nd_Gen)/A1.02.00.E Content-Length: 0
The SD strips the keep parameter from the Via header of the REGISTER request, and forwards the request to the Registrar.
REGISTER sip:512@192.168.7.32:5060 SIP/2.0 Via: SIP/2.0/UDP 192.168.101.23:5060;branch=z9hG4bK3q43klh3dafekdepnbaqip04e1 From: "512" <sip:512@172.16.101.38:5070;transport=UDP>;tag=443322 To: "512" <sip:512@172.16.101.38:5070> Call-ID: 1-14400@172.16.101.38 CSeq: 1 REGISTER Max-Forwards: 69 Contact: "512" <sip:512@192.168.101.23:5060;transport=udp>;expires:18000 User-Agent: ADTRAN_Total_Access_908e_(2nd_Gen)/A1.02.00.E Content-Length: 0 Allow: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS, REFER
The Registrar indicates successful registration with a 200 OK REGISTER response back to the SD.
SIP/2.0 200 OK Via: SIP/2.0/UDP 192.168.101.23:5060;branch=z9hG4bK3q43klh3dafekdepnbaqip04e1 From: "512" <sip:512@172.16.101.38:5070;transport=UDP>;tag=443322 To: "512" <sip:512@172.16.101.38:5070>;tag=b68b3d53a5a90225609112ff6c211bef.16a6 Call-ID: 1-14400@172.16.101.38 CSeq: 1 REGISTER Contact: <sip:512@192.168.101.23:5060;transport=udp>;expires=3600 Server: OpenSER (1.3.0-notls (i386/linux)) Content-Length: 0
The SD indicates its willingness to exchange Keep-Alives by assigning a value, which specifies the interval between Keep-Alives, to the keep parameter and re-inserting the parameter and its assigned value into the Via header of the REGISTER response.
SIP/2.0 200 OK Via: SIP/2.0/UDP 172.16.101.38:5070;branch=dd1;keep=20 From: "512" <sip:512@172.16.101.38:5070;transport=UDP>;tag=443322 To: "512" <sip:512@172.16.101.38:5070>;tag=b68b3d53a5a90225609112ff6c211bef.16a6 Call-ID: 1-14400@172.16.101.38 CSeq: 1 REGISTER Contact: <sip:512@172.16.101.38:5070>;expires=3600 Server: OpenSER (1.3.0-notls (i386/linux)) Content-Length: 0