2.2.1 Ms-Keep-Alive Header Field Syntax

This protocol extends the definition of message-header in [RFC3261] section 25 as follows. The Ms-Keep-Alive header field is the only field added to the list, along with the details for this field at the bottom.

 message-header  =  (Accept
                 /  Accept-Encoding
                 /  Accept-Language
                 /  Alert-Info
                 /  Allow
                 /  Authentication-Info
                 /  Authorization
                 /  Call-ID
                 /  Call-Info
                 /  Contact
                 /  Content-Disposition
                 /  Content-Encoding
                 /  Content-Language
                 /  Content-Length
                 /  Content-Type
                 /  CSeq
                 /  Date
                 /  Error-Info
                 /  Expires
                 /  From
                 /  In-Reply-To
                 /  Max-Forwards
                 /  MIME-Version
                 /  Min-Expires
                 /  Ms-Keep-Alive
                 /  Organization
                 /  Priority
                 /  Proxy-Authenticate
                 /  Proxy-Authorization
                 /  Proxy-Require
                 /  Record-Route
                 /  Reply-To
                 /  Require
                 /  Retry-After
                 /  Route
                 /  Server
                 /  Subject
                 /  Supported
                 /  Timestamp
                 /  To
                 /  Unsupported
                 /  User-Agent
                 /  Via
                 /  Warning
                 /  WWW-Authenticate
                 /  extension-header) CRLF
 Ms-Keep-Alive   = "ms-keep-alive" HCOLON ms-keep-alive-value
 ms-keep-alive-value = ms-keep-alive-role *(SEMI ms-keep-alive-capability) [ SEMI ms-keep-alive-timeout ] *(SEMI generic-param)
 ms-keep-alive-role = "UAC" / "UAS"
 ms-keep-alive-capability = ms-keep-alive-mechanism EQUAL BOOLEAN
 BOOLEAN = "yes" / "no" 
 ms-keep-alive-mechanism = "hop-hop" / "end-end" / "tcp" / token
 ms-keep-alive-timeout = "timeout" EQUAL 1*DIGIT

The Ms-Keep-Alive header field SHOULD be present in a SIP request and in the corresponding SIP response for negotiating the keep-alive mechanism that is to be used on the TCP connection on which the SIP request is sent. The Ms-Keep-Alive header field MUST NOT appear more than once in a SIP request or SIP response.

The Ms-Keep-Alive header field MUST contain the ms-keep-alive-role parameter. This parameter identifies the role of the sender in the keep-alive negotiation. The value MUST be one of the following:

  • "UAC": The sender is the initiator of the keep-alive negotiation.

  • "UAS": The sender is the responder to the keep-alive negotiation.

ms-keep-alive-capability: Specifies the keep-alive capability of the involved party. This value has two parts.

  • ms-keep-alive-mechanism: Specifies the keep-alive mechanism. The value of ms-keep-alive-mechanism MUST be one of the following:

    • "hop-hop": The hop-by-hop keep-alive mechanism is specified in section 3.4.

    • "end-end": Reserved for future use.

    • "tcp": Reserved for future use.

    • Any token value as specified in [RFC3261] section 25: Reserved for future use.

  • BOOLEAN: Indicates whether the specified keep-alive mechanism is supported by the sending party. This value MUST be either "yes" or "no". If any mechanism other than "hop-hop" is present, the value of BOOLEAN MUST be "no".

The Ms-Keep-Alive header field MUST have an ms-keep-alive-timeout parameter if the UAS accepts the keepalive message sent for keep-alive negotiation. The parameter value MUST be an unsigned integer that indicates the time, in seconds, that the connection will be kept alive.

generic-param: Reserved for future use.