{"id":1013,"date":"2026-02-22T11:38:23","date_gmt":"2026-02-22T03:38:23","guid":{"rendered":"https:\/\/www.myvoipapp.com\/blog\/?p=1013"},"modified":"2026-02-25T13:02:04","modified_gmt":"2026-02-25T05:02:04","slug":"keep-alive","status":"publish","type":"post","link":"https:\/\/www.myvoipapp.com\/blog\/2026\/02\/22\/keep-alive\/","title":{"rendered":"Keep-alive"},"content":{"rendered":"\n<p>In the field of SIP communication, there are two types of keep-alive mechanisms: device-level keep-alive and session (dialog) keep-alive.<\/p>\n\n\n\n<p>Device-level keep-alive currently has mature and unified solutions that comply with <strong><a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc3261\" target=\"_blank\" rel=\"noreferrer noopener\">RFC 3261<\/a><\/strong>, namely detection using the <strong>OPTIONS<\/strong> method. If the peer device returns a <strong>200 OK<\/strong> response, the device is considered alive. Terminals can also detect device-level keep-alive using <strong>REGISTER<\/strong> requests.<\/p>\n\n\n\n<p>Manufacturers have never had a unified solution for session keep-alive. Although <strong><a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc4028\" target=\"_blank\" rel=\"noreferrer noopener\">RFC 4028<\/a><\/strong> defines <strong>reINVITE<\/strong> and <strong>UPDATE<\/strong> for session keep-alive detection, these two operations are too complex for such purpose. They can trigger media renegotiation, which impairs call quality.<\/p>\n\n\n\n<p>At present, manufacturers share basically the same idea: since normal reINVITE and UPDATE operations will trigger new media negotiation, can we use them without SDP directly for session keep-alive? reINVITE is an exception: <strong>reINVITE without SDP<\/strong> has already been used in the 3PCC procedure, so it can no longer be used for session keep-alive.<\/p>\n\n\n\n<p>Based on our experience in interconnecting with equipment from various manufacturers over the years, we summarize the following operations for session keep-alive:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>UPDATE without SDP<\/li>\n\n\n\n<li>INFO without SDP<\/li>\n\n\n\n<li>MESSAGE without SDP<\/li>\n<\/ul>\n\n\n\n<p>Default behavior of the latest version of miniSIPServer:<\/p>\n\n\n\n<p>If the above three types of SIP messages are received during a session, the server will enter the session keep-alive processing flow. If the session exists, a <strong>200 OK<\/strong> response will be returned.<\/p>\n\n\n\n<p><strong>UPDATE<\/strong> and <strong>INFO<\/strong> can only be transmitted within a session by nature, so they inherently meet the requirements of keep-alive. We recommend using <strong>INFO<\/strong> first, as it is explicitly defined in RFC3261 and will definitely be supported by all manufacturers\u2019 equipment. In contrast, the <strong>UPDATE<\/strong> method is defined in a supplementary specification. Some manufacturers\u2019 equipment may not support <strong>UPDATE<\/strong>, let alone <strong>UPDATE without SDP<\/strong>.<\/p>\n\n\n\n<p><strong>MESSAGE<\/strong> can be transmitted both within a session and outside a session, and is used to deliver instant messages. We restrict <strong>MESSAGE without SDP<\/strong> to be transmitted only within a session and reserve it for the session keep-alive process.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the field of SIP communication, there are two types of keep-alive mechanisms: device-level keep-alive and session (dialog) keep-alive. Device-level keep-alive currently has mature and unified solutions that comply with RFC 3261, namely detection using the OPTIONS method. If the peer device returns a 200 OK response, the device is considered alive. Terminals can also detect device-level keep-alive using REGISTER requests. Manufacturers have never had a unified solution for session keep-alive. Although RFC 4028 defines reINVITE and UPDATE for session&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/www.myvoipapp.com\/blog\/2026\/02\/22\/keep-alive\/\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[35,34],"tags":[74,385,38,386,11,225],"class_list":["post-1013","post","type-post","status-publish","format-standard","hentry","category-minisipserver","category-minisipserver_cloud","tag-info","tag-keepalive","tag-message","tag-options","tag-sip","tag-update"],"_links":{"self":[{"href":"https:\/\/www.myvoipapp.com\/blog\/wp-json\/wp\/v2\/posts\/1013","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.myvoipapp.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.myvoipapp.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.myvoipapp.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.myvoipapp.com\/blog\/wp-json\/wp\/v2\/comments?post=1013"}],"version-history":[{"count":4,"href":"https:\/\/www.myvoipapp.com\/blog\/wp-json\/wp\/v2\/posts\/1013\/revisions"}],"predecessor-version":[{"id":1017,"href":"https:\/\/www.myvoipapp.com\/blog\/wp-json\/wp\/v2\/posts\/1013\/revisions\/1017"}],"wp:attachment":[{"href":"https:\/\/www.myvoipapp.com\/blog\/wp-json\/wp\/v2\/media?parent=1013"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.myvoipapp.com\/blog\/wp-json\/wp\/v2\/categories?post=1013"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.myvoipapp.com\/blog\/wp-json\/wp\/v2\/tags?post=1013"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}