📄 rfc4028.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML lang=en xml:lang="en"><HEAD><TITLE>RFC 4028 - Session Timers in the Session Initiation Protocol (SIP)</TITLE>
<META http-equiv=Content-Type content="text/html; charset=windows-1252">
<META content=index,follow name=robots>
<META content="rfcmarkup version 1.60" name=creator><LINK href="/images/rfc.png"
type=image/png rel=icon><LINK href="/images/rfc.png" type=image/png
rel="shortcut icon">
<STYLE type=text/css> body { margin: 0px 8px; font-size: 1em; } h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { font-weight: bold; line-height: 0pt; display: inline; white-space: pre; font-family: monospace; font-size: 1em; font-weight: bold; } pre { font-size: 1em; } .pre { white-space: pre; font-family: monospace; } .header{ font-weight: bold; } .invisible { text-decoration: none; color: white; } @media print { body { font-size: 10.5pt; } h1, h2, h3, h4, h5, h6 { font-size: 10.5pt; } a:link, a:visited { color: inherit; text-decoration: none; } .break { page-break-before: always; } .noprint { display: none; } } @media screen { .grey, .grey a:link, .grey a:visited { color: #777; } .docinfo { background-color: #EEE; } .top { border-top: 2px solid #EEE; } .bgwhite { background-color: white; } .bgred { background-color: #F44; } .bggrey { background-color: #666; } .bgbrown { background-color: #840; } .bgorange { background-color: #FA0; } .bgyellow { background-color: #EE0; } .bgmagenta{ background-color: #F4F; } .bgblue { background-color: #66F; } .bgcyan { background-color: #4DD; } .bggreen { background-color: #4F4; } .legend { font-size: 90%; } .cplate { font-size: 70%; border: solid grey 1px; } } </STYLE>
<SCRIPT type=text/javascript><!-- function addHeaderTags() { var spans = document.getElementsByTagName("span"); for (var i=0; i < spans.length; i++) { var elem = spans[i]; if (elem) { var level = elem.getAttribute("class"); if (level == "h1" || level == "h2" || level == "h3" || level == "h4" || level == "h5" || level == "h6") { elem.innerHTML = "<"+level+">"+elem.innerHTML+"</"+level+">"; } } } } var legend_html = "Colour legend:<br /> <table> <tr><td>Unknown:</td> <td><span class='cplate bgwhite'> </span></td></tr> <tr><td>Draft:</td> <td><span class='cplate bgred'> </span></td></tr> <tr><td>Informational:</td> <td><span class='cplate bgorange'> </span></td></tr> <tr><td>Experimental:</td> <td><span class='cplate bgyellow'> </span></td></tr> <tr><td>Best Common Practice:</td><td><span class='cplate bgmagenta'> </span></td></tr> <tr><td>Proposed Standard:</td><td><span class='cplate bgblue'> </span></td></tr> <tr><td>Draft Standard:</td> <td><span class='cplate bgcyan'> </span></td></tr> <tr><td>Standard:</td> <td><span class='cplate bggreen'> </span></td></tr> <tr><td>Historic:</td> <td><span class='cplate bggrey'> </span></td></tr> <tr><td>Obsolete:</td> <td><span class='cplate bgbrown'> </span></td></tr> </table>"; function showElem(id) { var elem = document.getElementById(id); elem.innerHTML = eval(id+"_html"); elem.style.visibility='visible'; } function hideElem(id) { var elem = document.getElementById(id); elem.style.visibility='hidden'; elem.innerHTML = ""; } // --> </SCRIPT>
</HEAD>
<BODY onload=addHeaderTags()>
<DIV style="HEIGHT: 8px">
<DIV class="pre noprint docinfo bgblue"
onmouseover="this.style.cursor='pointer';" title="Click for colour legend."
style="POSITION: absolute; HEIGHT: 6px" onclick="showElem('legend');"
onmouseout="hideElem('legend')"></DIV>
<DIV class="docinfo noprint pre legend" id=legend
onmouseover="showElem('legend');"
style="BORDER-RIGHT: #345 1px solid; PADDING-RIGHT: 9px; BORDER-TOP: #345 1px solid; PADDING-LEFT: 7px; LEFT: 4ex; VISIBILITY: hidden; PADDING-BOTTOM: 5px; BORDER-LEFT: #345 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #345 1px solid; POSITION: absolute; TOP: 4px; BACKGROUND-COLOR: white"
onmouseout="hideElem('legend');"></DIV></DIV><SPAN
class="pre noprint docinfo top">[<A title="Document search and retrieval page"
href="../html/">RFCs/IDs</A>] [<A title="Plaintext version of this document"
href="/rfc/rfc4028.txt">Plain Text</A>] [From <A
href="draft-ietf-sip-session-timer">draft-ietf-sip-session-timer</A>]
</SPAN><BR><SPAN class="pre noprint docinfo"></SPAN><BR><SPAN
class="pre noprint docinfo">PROPOSED STANDARD</SPAN><BR><SPAN
class="pre noprint docinfo"></SPAN><BR><PRE>Network Working Group S. Donovan
Request for Comments: 4028 J. Rosenberg
Category: Standards Track Cisco Systems
April 2005
<SPAN class=h1>Session Timers in the Session Initiation Protocol (SIP)</SPAN>
Status of This Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (2005).
Abstract
This document defines an extension to the Session Initiation Protocol
(SIP). This extension allows for a periodic refresh of SIP sessions
through a re-INVITE or UPDATE request. The refresh allows both user
agents and proxies to determine whether the SIP session is still
active. The extension defines two new header fields:
Session-Expires, which conveys the lifetime of the session, and
Min-SE, which conveys the minimum allowed value for the session
timer.
<SPAN class=grey>Donovan & Rosenberg Standards Track [Page 1]</SPAN>
<A class=invisible id=page-2 href="#page-2" name=page-2><SPAN class=break> </SPAN></A>
<SPAN class=grey><A href="./rfc4028">RFC 4028</A> Session Timer April 2005</SPAN>
Table of Contents
<A href="#section-1">1</A>. Introduction . . . . . . . . . . . . . . . . . . . . . . . . <A href="#page-2">2</A>
<A href="#section-2">2</A>. Terminology . . . . . . . . . . . . . . . . . . . . . . . . <A href="#page-3">3</A>
<A href="#section-3">3</A>. Overview of Operation . . . . . . . . . . . . . . . . . . . <A href="#page-4">4</A>
<A href="#section-4">4</A>. Session-Expires Header Field Definition . . . . . . . . . . <A href="#page-6">6</A>
<A href="#section-5">5</A>. Min-SE Header Field Definition . . . . . . . . . . . . . . . <A href="#page-8">8</A>
<A href="#section-6">6</A>. 422 Response Code Definition . . . . . . . . . . . . . . . . <A href="#page-8">8</A>
<A href="#section-7">7</A>. UAC Behavior . . . . . . . . . . . . . . . . . . . . . . . . <A href="#page-9">9</A>
<A href="#section-7.1">7.1</A>. Generating an Initial Session Refresh Request . . . . <A href="#page-9">9</A>
<A href="#section-7.2">7.2</A>. Processing a 2xx Response . . . . . . . . . . . . . . <A href="#page-9">9</A>
<A href="#section-7.3">7.3</A>. Processing a 422 Response . . . . . . . . . . . . . . <A href="#page-11">11</A>
<A href="#section-7.4">7.4</A>. Generating Subsequent Session Refresh Requests . . . . <A href="#page-11">11</A>
<A href="#section-8">8</A>. Proxy Behavior . . . . . . . . . . . . . . . . . . . . . . . <A href="#page-12">12</A>
<A href="#section-8.1">8.1</A>. Processing of Requests . . . . . . . . . . . . . . . . <A href="#page-13">13</A>
<A href="#section-8.2">8.2</A>. Processing of Responses . . . . . . . . . . . . . . . <A href="#page-14">14</A>
<A href="#section-8.3">8.3</A>. Session Expiration . . . . . . . . . . . . . . . . . . <A href="#page-15">15</A>
<A href="#section-9">9</A>. UAS Behavior . . . . . . . . . . . . . . . . . . . . . . . . <A href="#page-15">15</A>
<A href="#section-10">10</A>. Performing Refreshes . . . . . . . . . . . . . . . . . . . . <A href="#page-17">17</A>
<A href="#section-11">11</A>. Security Considerations . . . . . . . . . . . . . . . . . . <A href="#page-18">18</A>
<A href="#section-11.1">11.1</A>. Inside Attacks . . . . . . . . . . . . . . . . . . . . <A href="#page-18">18</A>
<A href="#section-11.2">11.2</A>. Outside Attacks . . . . . . . . . . . . . . . . . . . <A href="#page-19">19</A>
<A href="#section-12">12</A>. IANA Considerations . . . . . . . . . . . . . . . . . . . . <A href="#page-19">19</A>
12.1. IANA Registration of Min-SE and Session-Expires
Header Fields . . . . . . . . . . . . . . . . . . . . <A href="#page-19">19</A>
12.2. IANA Registration of the 422 (Session Interval Too
Small) Response Code . . . . . . . . . . . . . . . . . <A href="#page-20">20</A>
<A href="#section-12.3">12.3</A>. IANA Registration of the 'timer' Option Tag . . . . . <A href="#page-20">20</A>
<A href="#section-13">13</A>. Example Call Flow . . . . . . . . . . . . . . . . . . . . . <A href="#page-20">20</A>
<A href="#section-14">14</A>. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . <A href="#page-25">25</A>
<A href="#section-15">15</A>. References . . . . . . . . . . . . . . . . . . . . . . . . . <A href="#page-25">25</A>
<A href="#section-15.1">15.1</A>. Normative References . . . . . . . . . . . . . . . . . <A href="#page-25">25</A>
<A href="#section-15.2">15.2</A>. Informative References . . . . . . . . . . . . . . . . <A href="#page-26">26</A>
Authors' Addresses. . . . . . . . . . . . . . . . . . . . . . . . <A href="#page-26">26</A>
Full Copyright Statement. . . . . . . . . . . . . . . . . . . . . <A href="#page-27">27</A>
<SPAN class=h2><A name=section-1>1</A>. Introduction</SPAN>
The Session Initiation Protocol (SIP) [<A title='"SIP: Session Initiation Protocol"' href="#ref-2">2</A>] does not define a keepalive
mechanism for the sessions it establishes. Although the user agents
may be able to determine whether the session has timed out by using
session specific mechanisms, proxies will not be able to do so. The
result is that call stateful proxies will not always be able to
determine whether a session is still active. For instance, when a
user agent fails to send a BYE message at the end of a session, or
when the BYE message gets lost due to network problems, a call
stateful proxy will not know when the session has ended. In this
situation, the call stateful proxy will retain state for the call and
<SPAN class=grey>Donovan & Rosenberg Standards Track [Page 2]</SPAN>
<A class=invisible id=page-3 href="#page-3" name=page-3><SPAN class=break> </SPAN></A>
<SPAN class=grey><A href="./rfc4028">RFC 4028</A> Session Timer April 2005</SPAN>
has no method to determine when the call state information no longer
applies.
To resolve this problem, this extension defines a keepalive mechanism
for SIP sessions. UAs send periodic re-INVITE or UPDATE [<A title='"The Session Initiation Protocol (SIP) UPDATE Method"' href="#ref-3">3</A>] requests
(referred to as session refresh requests) to keep the session alive.
The interval for the session refresh requests is determined through a
negotiation mechanism defined here. If a session refresh request is
not received before the interval passes, the session is considered
terminated. Both UAs are supposed to send a BYE, and call stateful
proxies can remove any state for the call.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -