SIP                                                      H. Khartabil
   Internet Draft                                                  Nokia
   Expires: April 23, 2003                              October 24, 2002



               Congestion safety and Content Indirection
              draft-khartabil-sip-congestionsafe-ci-01.txt


STATUS OF THIS MEMO

   This document is an Internet-Draft and is in full conformance with
   all provisions of Section 10 of RFC2026.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

   Internet-Drafts are draft documents valid for a maximum of six
   months and may be updated, replaced, or obsoleted by other documents
   at any time.  It is inappropriate to use Internet- Drafts a
   reference material or to cite them other than as work in progress.

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   This Internet Draft will expire on April 23, 2003.


Copyright Notice

   Copyright (C) The Internet Society (2002). All Rights Reserved.


Abstract

   The Session Initiation Protocol allows the use of UDP for transport
   of SIP messages. Baseline SIP does not allow congestion control for
   messages larger than MTU of a certain link nor does it allow end
   points to specify their maximum acceptable message size, regardless
   of the underlying transport protocol.

   This document combines two, namely congestion safely and Content-
   Indirection Mechanism into the one document and presents scenarios
   where the 2 could be combined. It also introduces extensions to SIP
   that allows end points to specify their maximum acceptable message
   size.



Khartabil                                                     [Page 1]


Internet Draft        Congestion Safety and C-I          October 2002


Table of Contents

   1.0 Terminology...................................................3
   2.0 Introduction..................................................3
   3.0 Overview of Operation.........................................3
   4.0 UA Behaviour..................................................4
   4.1 UA Registering Desired Maximum SIP Message Size...............4
   4.2 UAS Receiving A SIP Message With Large Contents...............5
   4.3 UAC Assuring Congestion Safe SIP Request Path.................6
   4.4 UAC Behaviour when receiving a ô413ö or ô513ö Error Response..6
   5.0 Home Proxy Behaviour..........................................6
   5.1 Congestion Safe Home Proxy....................................6
   5.2 Home Proxy Receiving A SIP Message With Large Content.........7
   5.3 Home Proxy Refusing To Handle Large SIP Requests..............8
   5.4 Home Proxy Performing Content Indirection.....................9
   5.5 Home Proxy Receiving ô413ö Response from UA...................9
   6.0 Content Storage Server (CSS) Behaviour.......................10
   7.0 Syntax for Extensions........................................10
   7.1 Max-Size Header..............................................10
   7.2 Max-size parameter...........................................10
   8.0 Security considerations......................................10
   9.0 Examples.....................................................11
   9.1 Receiving A MESSAGE With Large Contents after a REGISTER, Home
   Proxy Performs Content-Indirection...............................11
   8.2 Receiving A NOTIFY With Large Contents, UAS Refuses To Handle
   Request..........................................................14
   10.0 IANA Considerations.........................................15
   11.0 Acknowledgements............................................15
   12.0 References..................................................15





















Khartabil                                                     [Page 2]


Internet Draft        Congestion Safety and C-I          October 2002


1.0 Terminology

   In this document, the key words "MUST", "MUST NOT", "REQUIRED",
   "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED" "MAY",
   and "OPTIONAL" are to be interpreted as described in RFC 2119 [5].


2.0 Introduction

   The Session Initiation Protocol [1] allows the use of UDP for
   transport of SIP messages.  The use of UDP with large payloads risks
   network congestion problems, as UDP itself does not define
   congestion prevention, detection, or correction mechanisms.  Large
   SIP messages may cause UDP datagram fragmentation, something not
   desired by a network of SIP entities.

   The root of the problem lies with the SIP proxies. SIP proxies are
   able to convert the transport protocol from reliable to unreliable
   on hop-by-hop basis, therefore end-to end congestion-safe path for
   SIP messages cannot be guaranteed.

   Conventional SIP payloads carry signalling information about media,
   but not media itself.  There is potential that when a SIP
   infrastructure is shared between call signalling and instant
   messaging [2], the IM traffic will interfere with call signalling
   traffic. This also applies to other types of SIP Requests that have
   potential to carry large contents (NOTIFY is an example).

   Furthermore, mobile terminals might want to limit the size of a SIP
   message received regardless of the underlying transport protocol
   (e.g. TCP). This may be due to memory limitations or the fact that
   the radio link that the terminal is accessing at this instant is
   very slow and the user wants to postpone collecting data until a
   better link is acquired.


3.0 Overview of Operation

   The basic scenario is when a SIP request is being sent from a UA1 to
   a UA2 that has a home proxy. That SIP request could carry large
   contents.

                                          ---
                     +---------+        //   \\
    +-------+        | UA2     |       /       \       +-------+
    |UA2    |--------| Home    |-------Internet -------| UA1   |
    |       |        | Proxy   |      |         |      |       |
    +-------+        |         |       \       /       +-------+
                     +---------+        \\   //
                                          ---


Khartabil                                                     [Page 3]


Internet Draft        Congestion Safety and C-I          October 2002


   UA2 earlier has registered at the registrar co-located with the home
   proxy. UA2 may have indicated its maximum acceptable message size
   using the extensions defined in this document.

   Upon the home proxy receiving the request with the large contents,
   it has the option of rejecting the request with a ô513 Message Too
   Largeö error response (congestion safety) or forwarding it to a
   Content Storage Server (CSS). The home proxy learns the maximum
   acceptable message size from registration by UA2 (regardless of
   transport protocol) or through configuration.

   The home proxy, unaware of the limitations, can forward the large
   message to UA2, who consequently, can reject the message with error
   response ô413 Request Entity Too Largeö. UA2 can indicate its
   maximum acceptable message size using extension in this document.

   The home proxy receiving the ô413ö response can either just forward
   that response upstream or act as a B2BUA and resend the requested
   with content-indirection to the CSS.


4.0 UA Behaviour

4.1 UA Registering Desired Maximum SIP Message Size

   Having learnt its capabilities and limitations (by user input or
   other means), a SIP UA issuing a REGISTER request MAY indicate its
   acceptable maximum size for a SIP message (including headers and
   body).

   This section introduces a new SIP-URI parameter ômax-sizeö.

   A SIP UA registering its address will include this SIP-URI parameter
   in the contact-header supplied with the REGISTER request.

   If the transport parameter is present in the SIP URI of the contact
   header, then this max-size applies to that particular transport
   protocol. If transport parameter is not present, then this max-size
   applies to the default transport protocol used (UDP).

   Example REGISTER Request:

   REGISTER sip:registrar.nokia.com SIP/2.0
   Via: SIP/2.0/UDP host1.nokia.com;branch=z9hG4bK346434r
   From: sip:hisham.khartabil@nokia.com;tag=31jrlkejrq3kl3jkl879defje3
   To: sip:hisham.khartabil@nokia.com
   Contact: <sip:hisham.khartabil@host1.nokia.com;max-size=1300>
   Call-Id: vjn86732nv4fgiofd
   CSeq: 1 REGISTER
   Max-Forwards:70

   Example REGISTER Request where the max-size applies to TCP:


Khartabil                                                     [Page 4]


Internet Draft        Congestion Safety and C-I          October 2002


   REGISTER sip:registrar.nokia.com SIP/2.0
   Via: SIP/2.0/UDP host1.Nokia.com;branch=z9hG4bK346434r
   From: sip:hisham.khartabil@nokia.com;tag=31jrlkejrq3kl3jkl879defje3
   To: sip:hisham.khartabil@nokia.com
   Contact: <sip:hisham.khartabil@host1.nokia.com;transport=tcp;max-
   size=1300>
   Call-Id: vjn86732nv4fgiofd
   CSeq: 1 REGISTER
   Max-Forwards:70


4.2 UAS Receiving A SIP Message With Large Contents

   A SIP UAS may not have indicated its willingness or capabilities in
   receiving large message content with the REGISTER request. This may
   be due to lack of knowledge by the UA, at the time of registration,
   of its memory or radio link constraints.

   A SIP UAS receiving a SIP Request it is unable to handle due to
   size, regardless of the underlying transport protocol, MAY reject
   the request with ô413 Request Entity Too Largeö. The UAS MAY close
   the connection, if the transport protocol was a reliable connection
   oriented one, to prevent the sender from continuing the request. If
   the condition is temporary, the UAS SHOULD include a Retry-After
   header field to indicate that this condition is temporary and after
   what time the sender can try to send the same request again.

   The UAS MAY also indicate its acceptable message size capabilities.
   Here we introduce a new SIP header ôMax-Sizeö. The ô413ö response
   sent back by the UAS MAY contain this header. This header contains
   the maximum acceptable message size by this UAS.

   The ô413ö response MAY also include an Accept-header with value
   message/external-body indicating its capability to handle content-
   indirection.

   Example response:

   SIP/2.0 413 Request Entity Too Large
   Via: SIP/2.0/UDP proxy.nokia.com;branch=z9hG4bK4kl5jr0iui0giu09df43
   Via: SIP/2.0/UDP host1.somewhere.com;branch=z9hG4bK346434r
   From: sip:markus.isomaki@nokia.com;tag=4jk123vxbc96
   To: sip:hisham.khartabil@nokia.com;tag=fsad98754b6b64m
   Call-Id: j4lk2j35879cvx7b
   CSeq: 1 MESSAGE
   Max-Size: 1300
   Retry-After: 180
   Max-Forwards:70
   Accept: message/external-body

   A SIP Response with large contents that exceeds the limitations is
   discarded. If the transport protocol is connection-oriented, the
   connection MAY be closed to stop further sending of the response.

Khartabil                                                     [Page 5]


Internet Draft        Congestion Safety and C-I          October 2002




4.3 UAC Assuring Congestion Safe SIP Request Path

   A UAC sending a SIP Request and wants to make sure that all proxies
   on the path are congestion-safe proxies MUST insert a ôProxy-
   Requireö header with the tag ôcongestion-safeö as described in [3].


4.4 UAC Behaviour when receiving a ô413ö or ô513ö Error Response

   The max-size header MAY prompt the UAC of the request to send a
   newly formulated request immediately with either smaller contents or
   with content-indirection.

   If the Retry-After header is also present, the UAC MUST either wait
   for that time before sending the same request, or it immediately
   sends the newly formulated request. It SHOULD NOT resend exactly the
   same request within the retry-after period. The Retry-After value
   MAY be used as an indication of how long this Max-Size constraint is
   valid for.

   Max-size header indicates the SIP message size the UAS can handle
   for the transport protocol used to send the request. This constraint
   SHOULD NOT be applied to the same Request sent on different
   transport protocol.

   If an Accept-header is present without the value message/external-
   body, the UAC MUST NOT send the new message with content-type:
   message/external-body.

   The UAC MAY use this Max-size value to send new, unrelated Requests
   to the same URI within the duration indicated by the retry-after
   header. For example: UserA sends a SIP MESSAGE with large content to
   userB. UserB rejects the request with ô413 Request Entity Too Largeö
   with a max-size header of value 1300 bytes and a Retry-After value
   of 80 seconds. UserA now needs to send an unrelated NOTIFY to userB,
   due to an earlier SUBSCRIBE. This NOTIFY will be sent within the 80
   seconds specified. UseA MAY use the 1300 byte constraint to send the
   NOTIFY. This has to be done with care since the UAS receiving the
   NOTIFY could be different that the one that received the MESSAGE.
   The UAC has to be certain that UAS receiving the requests are the
   same.


5.0 Home Proxy Behaviour

   Home proxy in this context means the inbound proxy closest to the UA
   where the UA has registered. In 3GPP terms, it is the S-CSCF closest
   to the UA.


5.1 Congestion Safe Home Proxy

Khartabil                                                     [Page 6]


Internet Draft        Congestion Safety and C-I          October 2002



   A congestion safe home proxy MUST be complaint with this
   specification as well as [3] and [4]. This home proxy MUST
   understand the option tag ôcongestion-safeö.

   A congestion safe proxy MUST be able to handle content-indirection
   if it is configured with a Content Storage Server (CSS) as described
   in section 4.2. If not configured with CSS, the proxy behave as
   described in [3]


5.2 Home Proxy Receiving A SIP Message With Large Content

   Typically, this proxy is co-located with a Registrar. It handles
   incoming requests for a domain it services. This home proxy MAY also
   be a congestion-safe proxy as defined in [3].

   The home proxy MAY be configured with a maximum allowable SIP
   message size that is destined to a recipient on a certain interface.
   This value is typically network configured with the lowest Maximum
   Transfer Unit (MTU) en route to the recipient (UAS) on that
   interface. The proxy server MUST only use the value when the
   recipient (UAS) is using UDP as the transport protocol. How this
   configuration is performed is out side the scope of this document.
   It is RECOMMENDED that dynamic discovery and configuration is
   performed. A proxy configured with this value is considered to be
   congestion-safe.

   The proxy MAY also learn the maximum size of a particular UA by
   means of registration as described in section 3.1 (Note in this
   case, the value may possibly not be the MTU). The smaller of the two
   values is used if both are present and the registered URI uses UDP
   as the transport protocol. If the registered URI uses connection-
   oriented protocol (such as TCP), then the configured value MUST be
   ignored.

   When the home proxy receives a request for a user in its domain, it
   examines the message size as follows:

   Note: This assumes that the user has registered and that the proxy
   has already contacted the registrar and retrieved the registered
   URI.

   Note: This also assumes that the proxy server, after fetching the
   registered contact has accepted to handle a request with size larger
   than the configured MTU or larger than the registered max-size for
   that recipient. If the proxy is not willing to do so, it simply
   rejects the request with ô513 Message Too Largeö. See section 4.3
   for more details.

   1. The proxy examines the SIP URI searching for host and transport
   to send the request to.


Khartabil                                                     [Page 7]


Internet Draft        Congestion Safety and C-I          October 2002


   2. The proxy also searches for the max-size parameter and for the
   configured maximum allowable message size.

   3. If the transport protocol is TCP, there are 2 cases (since
   configured value is not used for TCP):
          a. Registered URI does not contain max-size parameter. In
          this case, processing proceeds as described in [3].

          b. Registered URI does contain max-size parameter. In this
          case, content-indirection MAY be applied. See section 4.4 for
          more details.

   4. If the transport protocol is UDP, there are 4 cases:
   Proxy is not configured with this value and registered URI does not
   contain max-size parameter. In this case, processing proceeds as
   described in [3].

          a. Proxy is configured with this value and registered URI
          does not contain max-size parameter. In this case, the
          message size is compared to the configured value. If the
          message size is smaller, then processing proceeds as normal.
          If the message size is greater, content-indirection MAY be
          applied. See section 4.4 for more details.

          b. Proxy is not configured with this value and registered URI
          does contain max-size parameter. In this case, the message
          size is compared to the registered URI max-size parameter
          value. If the message size is smaller, then processing
          proceeds as normal. If the message size is greater, content-
          indirection MAY be applied. See section 4.4 for more details.

          c. Proxy is configured with this value and registered URI
          does contain max-size parameter. In this case, the message
          size is compared to the smaller value of the two. If the
          message size is smaller, then processing proceeds as normal.
          If the message size is greater, content-indirection MAY be
          applied. See section 4.4 for more details.

          d. A SIP Response with large contents that exceeds the
          maximum acceptable size is discarded. If the transport
          protocol is connection-oriented, the connection MAY be closed
          to stop further sending of the response.


5.3 Home Proxy Refusing To Handle Large SIP Requests

   There are circumstances where the home proxy refuses to perform
   content-indirection on a received SIP Request destined to a
   recipient where a maximum message size constraint has been imposed.
   These circumstances may include the user not paying for this service
   or simply that the proxy does not know how to perform content-
   indirection (see section 4.1 about a congestion safe proxy). The

Khartabil                                                     [Page 8]


Internet Draft        Congestion Safety and C-I          October 2002


   definitions of these circumstances are outside the scope of this
   document.

   In any case, when the home proxy refused to handle this situation or
   it is not a congestion safe proxy (does not understand the option
   tag ôcongestion-safeö), it returns a ô513 Message Too Largeö
   response. Reference [3] shows how a proxy SHOULD handle this
   situation.

   The ô513ö response SHOULD NOT include an Accept-header with
   message/external-body. This is because content indirection would
   have been performed at this point if the home proxy was capable and
   willing to do so.


5.4 Home Proxy Performing Content Indirection

   A home proxy that is a congestion safe proxy MUST handle content
   indirection.

   Here we define a new functional SIP entity called ôContent Storage
   Server (CSS). A congestion safe proxy MUST be configured with the
   CSS address.

   Once the home proxy has accepted to perform content indirection on a
   SIP Request, it forwards the message to the CSS. Section 16.6 of [1]
   defines the steps to follow. Pay special attention to step 6 where
   it discusses how a proxy may divert a SIP Request to a specific next
   hop. Below is a rewrite of that section tailored to the terminology
   used in this document:

   A Home proxy MAY mandate that a request visit a CSS before being
   delivered to the destination. This is to accommodate content
   indirection. A home proxy MUST ensure that CSS is a loose router.
   Generally, this can only be known with certainty if the CSS is
   within the same administrative domain. The CSS is represented by a
   URI (which contains the lr parameter). This URI MUST be pushed into
   the Route header field ahead of any existing values, if present. If
   the Route header field is absent, it MUST be added, containing that
   URI.


5.5 Home Proxy Receiving ô413ö Response from UA

   Open issue: should we just choose to forward the response upstream?

   A UA refusing to handle a large SIP Request may reject the request
   with ô413ö error response as describe in section 3.2.

   When the home proxy receives this response, it MAY choose to handle
   the request itself. It does so by reissuing the request, but this
   time, it sends it via the CSS using the route-header, as described

Khartabil                                                     [Page 9]


Internet Draft        Congestion Safety and C-I          October 2002


   in section 4.4. The home server MAY also send a ô181 Call Is Being
   Forwardedö provisional response back to the sender.

   There are situations where the home proxy refuses the handle the
   request itself and alternatively just forward the ô413ö response to
   sender. See section 4.3 for more details.


6.0 Content Storage Server (CSS) Behaviour

   The CSS behaves as a SIP Back To Back User Agent (B2BUA). When it
   receives a SIP Request performs the following steps:

   1. Extracts the body of the Request and stores it in an HTTP server.

   2. Responds to the sender with a ô202 Acceptedö response.

   3. Formulates a new request that includes the URL where the content
   can be retrieved. This procedure is described in [4].

   4. Sends the new request to the destination, maintaining any tags in
   the To and From headers sent in the original request. This is to
   accommodate for SIP requests within dialogs being delivered to the
   right dialog.


7.0 Syntax for Extensions

7.1 Max-Size Header

   Max-Size = ôMax-Sizeö HCOLON delta-seconds

   Additions to SIP Table 3:

   Header field          where   proxy ACK BYE CAN INV OPT REG
   -----------------------------------------------------------

   Max-Size               413      a    -   -   -   -   -   -


7.2 Max-size parameter

   Max-size-param = ômax-size=ö 1*DIGIT

8.0 Security considerations

   The presence of Max-size header in a SIP message has a significant
   effect on the ways in which the request is handled at a server. As a
   result, it is especially important that messages containing this
   extension be authenticated. The same holds true for registrations
   with contact parameters.


Khartabil                                                    [Page 10]


Internet Draft        Congestion Safety and C-I          October 2002


   Processing of requests and looking up criteria for message size
   requires set operations and searches, which can require some amount
   of computation. This enables a DOS attack whereby a user can send
   requests with substantial numbers messages with large contents, in
   the hopes of overloading the server. To counter this, the server
   SHOULD authenticate the sender.

   REGISTER requests can reveal sensitive information about a UAÆs
   capabilities. If this information is sensitive, it SHOULD be
   encrypted using SIP S/MIME capabilities.

   Open issue: End-to-end Encryption. Does this introduce any open
   issues if the whole body is stored in the CSS including the signed
   and encrypted parts? How does the UA trust the CSS?

9.0 Examples

9.1 Receiving A MESSAGE With Large Contents after a REGISTER, Home
Proxy Performs Content-Indirection

    UA2                 CSS                UA2                  UA1
                                           Home
                                           Proxy
     |                   |                   |                   |
     |                   |                   |                   |
     |  (F1) REGISTER    |                   |                   |
     |-------------------------------------->|                   |
     |                   |                   |                   |
     |                   | (F2) 200 Ok       |                   |
     |<--------------------------------------|                   |
     |                   |                   |                   |
     |                   |                   |                   |
     |                   |                   |                   |
     |                   |                   | (F3) MESSAGE      |
     |                   |                   |<------------------|
     |                   | (F4) MESSAGE      |                   |
     |                   |<------------------|                   |
     |                   |                   |                   |
     |                   |                   |                   |
     |                   | (F5) 202 Accepted |                   |
     |                   |------------------>|                   |
     | (F7) MESSAGE      |                   | (F6) 202 Accepted |
     |<------------------|                   |------------------>|
     |                   |                   |                   |
     |                   |                   |                   |
     | (F8) 200 Ok       |                   |                   |
     |------------------>|                   |                   |
     |                   |                   |                   |
     |                   |                   |                   |
     |                   |                   |                   |


   (F1) REGISTER sent from UA2 to Home Proxy (Registrar)

Khartabil                                                    [Page 11]


Internet Draft        Congestion Safety and C-I          October 2002



   REGISTER sip:registrar.nokia.com SIP/2.0
   Via: SIP/2.0/UDP host2.somewhere.com;branch=z9hG4bKue73jhhdue
   From: sip:ua2@somewhere.com;tag=48er8fdjkcfnciue9843ifj
   To: sip:ua2@somewhere.com
   Call-Id: 3mkejdc9e9834judjd
   CSeq: 1 REGISTER
   Expires: 3600
   Contact: <sip:ua2@host2.nokia.com;max-size=1300>
   Max-Forwards: 70

   (F2) 200 Ok from Home proxy to UA2

   SIP/2.0 200 Ok
   Via: SIP/2.0/UDP host2.somewhere.com;branch=z9hG4bKue73jhhdue
   From: sip:ua2@somewhere.com;tag=48er8fdjkcfnciue9843ifj
   To: sip:ua2@somewhere.com;tag=393k3lmn3n3934
   Call-Id: 3mkejdc9e9834judjd
   CSeq: 1 REGISTER
   Contact: <sip:ua1@host2.nokia.com;max-size=1300>,expires=3600
   Max-Forwards: 70

   (F3) Message sent from UA1 to UA2 with very large content

   MESSAGE sip:ua2@nokia.com SIP/2.0
   Via: SIP/2.0/UDP host1.somewhere.com;branch=z9hG4bK346434r
   From: sip:ua1@somewhere.com;tag=31jrlkejrq3kl3jkl879defje3
   To: sip:ua1@nokia.com
   Call-Id: vjn86732nv4fgiofd
   CSeq: 1 MESSAGE
   Max-Forwards: 70
   Content-type: text/html
   Content-length: 20000

   [Large Body]

   (F4) MESSAGE is directed by UA2's home proxy to CSS. Home proxy
   accepts to content-indirect

   MESSAGE sip:ua2@nokia.com SIP/2.0
   Via: SIP/2.0/TCP homeproxy.nokia.com;branch=z9hG4bKewrlkjdfkjl
   Via: SIP/2.0/UDP host1.somewhere.com;branch=z9hG4bK346434r
   From: sip:ua1@somewhere.com;tag=31jrlkejrq3kl3jkl879defje3
   To: sip:ua1@nokia.com
   Call-Id: vjn86732nv4fgiofd
   CSeq: 1 MESSAGE
   Route: sip:css.nokia.com
   Max-Forwards: 69
   Content-type: text/html
   Content-length: 20000

   [Large Body]


Khartabil                                                    [Page 12]


Internet Draft        Congestion Safety and C-I          October 2002


   (F5) CCS returns a 202 Accepted

   SIP/2.0 202 Accepted
   Via: SIP/2.0/TCP homeproxy.nokia.com;branch=z9hG4bKewrlkjdfkjl
   Via: SIP/2.0/UDP host1.somewhere.com;branch=z9hG4bK346434r
   From: sip:ua1@somewhere.com;tag=31jrlkejrq3kl3jkl879defje3
   To: sip:ua1@nokia.com;tag=5nixucvzo3241bqewmn
   Contact: <sip:ua1@host1.nokia.com;max-size=1300>
   Call-Id: vjn86732nv4fgiofd
   CSeq: 1 MESSAGE
   Max-Forwards: 70

   (F6) Home proxy forwards response to UA1

   SIP/2.0 202 Accepted
   Via: SIP/2.0/UDP host1.somewhere.com;branch=z9hG4bK346434r
   From: sip:ua1@somewhere.com;tag=31jrlkejrq3kl3jkl879defje3
   To: sip:ua1@nokia.com;tag=5nixucvzo3241bqewmn
   Contact: <sip:ua1@host1.nokia.com;max-size=1300>
   Call-Id: vjn86732nv4fgiofd
   CSeq: 1 MESSAGE
   Max-Forwards: 69

   (F7) CCS sends the content-indirected MESSAGE to UA2 with the URL

   MESSAGE sip:ua2@nokia.com SIP/2.0
   Via: SIP/2.0/UDP css.nokia.com;branch=z9hG4bK342kj5klj43klndsm
   From: sip:ua1@somewhere.com;tag=31jrlkejrq3kl3jkl879defje3
   To: sip:ua1@nokia.com
   Contact: <sip:ua1@host1.nokia.com;max-size=1300>
   Call-Id: vjn86732nv4fgiofd
   CSeq: 1 MESSAGE
   Max-Forwards: 70
   Content-Type: message/external-body; access-type=URL;

   url="http://131.228.13.2/im/9207807c03d4a5e0e6907b0dc89c9067";
   Content-Length: 32

   Content-Type: text/html

   (F8) 200 Ok is returned by UA2

   SIP/2.0 200 Ok
   Via: SIP/2.0/UDP css.nokia.com;branch=z9hG4bK342kj5klj43klndsm
   From: sip:ua1@somewhere.com;tag=31jrlkejrq3kl3jkl879defje3
   To: sip:ua1@nokia.com;tag=dfjkla43kjl5ldskfj
   Contact: <sip:ua1@host1.nokia.com;max-size=1300>
   Call-Id: vjn86732nv4fgiofd
   CSeq: 1 MESSAGE
   Max-Forwards: 70



Khartabil                                                    [Page 13]


Internet Draft        Congestion Safety and C-I          October 2002


8.2 Receiving A NOTIFY With Large Contents, UAS Refuses To Handle
Request

   This example assumes that a subscription has been established. It
   also assumes that UA2 has not registered a max-size limit and that
   the home proxy configured max-size is less than the size of the
   NOTIFY.

   UA2                 CSS                 UA2                  PS
                                           Home
                                           Proxy
     |                   |                   |                   |
     |                   |                   | (F1) NOTIFY       |
     |                   |                   |<------------------|
     |                   |                   |                   |
     |  (F2) NOTIFY      |                   |                   |
     |<--------------------------------------|                   |
     |                   |                   |                   |
     |                   | (F3) 413          |                   |
     |-------------------------------------->|                   |
     |                   |                   | (F4) 413          |
     |                   |                   |------------------>|
     |                   |                   |                   |

   (F1) NOTIFY sent from PS to UA2, via home proxy with very large
   content

   NOTIFY sip:ua2@host2.nokia.com SIP/2.0
   Via: SIP/2.0/TCP ps.nokia.com;branch=z9hG4bK346434r
   From: sip:ps.nokia.com;tag=31jrlkejrq3kl3jkl879defje3
   To: sip:ua2@nokia.com;tag=eqwriuo423nf
   Call-Id: vjn86732nv4fgiofd
   CSeq: 2 NOTIFY
   Route: sip: homeproxy.nokia.com
   Max-Forwards: 70
   Content-Type: application/cpim-pidf+xml
   Content-length: 20000

   [Large Body]

   (F2) NOTIFY forwarded from home proxy to UA2 with very large
   content. Home proxy checked its max-size configuration and found
   that this message passes.

   NOTIFY sip:ua2@host2.nokia.com SIP/2.0
   Via: SIP/2.0/TCP homeproxy.nokia.com;branch=z9hG4bKre78re89jfdkj
   Via: SIP/2.0/TCP ps.nokia.com;branch=z9hG4bK346434r
   From: sip:ps.nokia.com;tag=31jrlkejrq3kl3jkl879defje3
   To: sip:ua2@nokia.com;tag=eqwriuo423nf
   Call-Id: vjn86732nv4fgiofd
   CSeq: 2 NOTIFY
   Max-Forwards: 69
   Content-Type: application/cpim-pidf+xml

Khartabil                                                    [Page 14]


Internet Draft        Congestion Safety and C-I          October 2002


   Content-length: 20000

   [Large Body]

   (F3) UA2 refuses the request due to its large content and returns a
   413 response

   SIP/2.0 413 Message Too Large
   Via: SIP/2.0/TCP homeproxy.nokia.com;branch=z9hG4bKre78re89jfdkj
   Via: SIP/2.0/TCP ps.nokia.com;branch=z9hG4bK346434r
   From: sip:ps.nokia.com;tag=31jrlkejrq3kl3jkl879defje3
   To: sip:ua2@nokia.com;tag=eqwriuo423nf
   Call-Id: vjn86732nv4fgiofd
   CSeq: 2 NOTIFY
   Max-size: 1300
   Max-Forwards: 70

   (F4) 413 passed by home proxy to PS. Home proxy did not content-
   indirect.
   SIP/2.0 413 Message Too Large
   Via: SIP/2.0/TCP ps.nokia.com;branch=z9hG4bK346434r
   From: sip:ps.nokia.com;tag=31jrlkejrq3kl3jkl879defje3
   To: sip:ua2@nokia.com;tag=eqwriuo423nf
   Call-Id: vjn86732nv4fgiofd
   CSeq: 2 NOTIFY
   Max-size: 1300
   Max-Forwards: 69


10.0 IANA Considerations

   Once the header and parameter names have been agreed on, they will
   be registered with IANA.

11.0 Acknowledgements

   I would like to thank Jose Costa-Requena, Mikko Lonnfors, Pekka
   Pessi and Nokia for their comments and support.


12.0 References

   [1] J. Rosenberg, et al. ôSIP: Session Initiation Protocolö. RCF
   3261, Internet Engineering Task Force, June 2002.

   [2] B. Campbell et al. "SIP Extensions for Instant Messaging",
   draft-ietf-sip-message-05.txt. Internet Draft, Internet Engineering
   Task Force, June 2002.  Work in progress.

   [3] S. Olson. "A Mechanism for Content Indirection is SIP Messages",
   draft-ietf-sip-content-indirect-mech-00.txt. Internet Draft,
   Internet Engineering Task Force, August 2002. Work in progress.


Khartabil                                                    [Page 15]


Internet Draft        Congestion Safety and C-I          October 2002


   [4] D. Willis. "SIP Congestion Safety", draft-ietf-sip-congestsafe-
   00.txt. Internet Draft, Internet Engineering Task Force, August
   2002. Work in progress.

   [5] S. Bradner, "Key words for use in RFCs to indicate requirement
      levels," RFC 2119, Internet Engineering Task Force, Mar. 1997.


Authors' Addresses

   Hisham Khartabil
   Nokia

   P.O. Box 321
   FIN-00045
   NOKIA GROUP
   FINLAND

   Email: Hisham.Khartabil@nokia.com
   Tel: + 358 7180 76161

Full Copyright Statement

   Copyright (C) The Internet Society (2002).  All Rights Reserved.

   This document and translations of it may be copied and furnished to
   others, and derivative works that comment on or otherwise explain it
   or assist in its implementation may be prepared, copied, published
   and distributed, in whole or in part, without restriction of any
   kind, provided that the above copyright notice and this paragraph
   are included on all such copies and derivative works.  However, this
   document itself may not be modified in any way, such as by removing
   the copyright notice or references to the Internet Society or other
   Internet organizations, except as needed for the purpose of
   developing Internet standards in which case the procedures for
   copyrights defined in the Internet Standards process must be
   followed, or as required to translate it into languages other than
   English.

   The limited permissions granted above are perpetual and will not be
   revoked by the Internet Society or its successors or assigns.

   This document and the information contained herein is provided on an
   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Acknowledgement

   Funding for the RFC Editor function is currently provided by the
   Internet Society.

Khartabil                                                    [Page 16]