Network Working Group M. Petit-Huguenin Internet-Draft 8x8, Inc. Intended status: Standards Track December 6, 2006 Expires: June 9, 2007 Preventing Fragmentation for Client Initiated Connections in the Session Initiation Protocol (SIP) draft-petithuguenin-sip-outbound-fragmentation-00 Status of this Memo By submitting this Internet-Draft, each author represents that any applicable patent or other IPR claims of which he or she is aware have been or will be disclosed, and any of which he or she becomes aware will be disclosed, in accordance with Section 6 of BCP 79. 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 as 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 June 9, 2007. Copyright Notice Copyright (C) The Internet Society (2006). Abstract There is cases where a Session Initiation Protocol (SIP) client can initiate a bidirectional UDP stream or a congestion controlled protocol connection to a SIP server but the SIP server cannot do the same in the other direction. The server can reuse the existing bidirectional UDP stream or connection but cannot use a congestion controlled protocol connection if the client chose to use a bidirectional UDP stream. This document described a method to force Petit-Huguenin Expires June 9, 2007 [Page 1] Internet-Draft Outbound fragmentation December 2006 the client to initiate a congestion controlled protocol connection to the server. Table of Contents 1. Overview of Operation . . . . . . . . . . . . . . . . . . . . . 3 2. UA Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3. Edge Proxy Behavior . . . . . . . . . . . . . . . . . . . . . . 4 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 4 5. Security Considerations . . . . . . . . . . . . . . . . . . . . 4 6. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 7. Norminative References . . . . . . . . . . . . . . . . . . . . 7 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 8 Intellectual Property and Copyright Statements . . . . . . . . . . 9 Petit-Huguenin Expires June 9, 2007 [Page 2] Internet-Draft Outbound fragmentation December 2006 1. Overview of Operation An UA using this specification creates flows as defined in [I-D.ietf-sip-outbound], with the difference that a UDP flow is prefered to a congestion controlled transport flow. There is two cases where an UA needs to replace an UDP flow by a congestion controlled flow. The first case is when the UA uses a bidirectional UDP stream for the flow and the edge proxy receives a request for this UA that need a congestion controlled protocol. The edge proxy sends a STUN ForceCCP Request over the existing UDP flow. The UA answers the request by sending a ForceCCP Response and immediately creates a new flow to the same edge proxy over a congestion controlled transport. The Edge proxy then uses this flow to send the request to the UA. The new flow is temporary and will be replaced by an UDP flow after the end of the transaction. The second case is when the UA received a request over a bidirectional UDP stream, but needs to send the response over a congestion controlled transport. The UA needs to follow the specification defined in [I-D.petithuguenin-sip-fragmentation-responses]. When the UA detects that the last hop must be retried with a congestion controlled transport, then prior to answer the request with a 6?? Congestion Control response, it replaces the UDP flow by a congestion controled transport flow. The Edge proxy will then use the new flow to send the request. 2. UA Behavior An UA compliant with this specification creates flows as described in [I-D.ietf-sip-outbound] but with a preference for flows created over UDP. The UA must be ready to receive a STUN ForceCCP request on the same flows that are used to send the STUN Binding Request for the NAT binding keepalive. When a ForceCCP Request is received the UA sends a ForceCCP Response to stop the retransmission and immediately registers on the same flow but this time by using a congestion controlled transport. When the UA receives a request that is compliant with [I-D.petithuguenin-sip-fragmentation-responses] and finds that the response needs to be sent on a congestion controlled transport, it then immediately registers on the same flow by using a congestion controlled transport, and then reject the request with a 6?? Congestion Controlled. This will force the edge proxy to use the newly created flow. Petit-Huguenin Expires June 9, 2007 [Page 3] Internet-Draft Outbound fragmentation December 2006 In both cases The UA will close the transport after the end of the last SIP transaction carried by the transport or 5 seconds after the creation of the transport if no SIP transaction is is carried by this transport. The UA recreates the flow over UDP just before closing the connection. 3. Edge Proxy Behavior When an edge proxy wants to proxy a request over a congestion controlled transport but cannot find a flow to do it, it sends a STUN ForceCCP Request over a UDP flow. If it can find a newly created controlled transport flow in the next 32 seconds, then it respond with a 408 to the request. If a new flow is found, then the request is proxied over this flow. 4. IANA Considerations TBD 5. Security Considerations TBD Petit-Huguenin Expires June 9, 2007 [Page 4] Internet-Draft Outbound fragmentation December 2006 6. Example Endpoint : Edge Registrar Home | : | | | | REGISTER : | | | F1 |------------------>| REGISTER | | F2 | : |==========>| | | : | 200 R | | F3 | : 200 R |<==========| | F4 |<------------------| | | | BindingRequest | | | F5 |------------------>| | | | BindingResponse | | | F6 |<------------------| | | | : | | | INVITE F7 | : | | INVITE |<======== F8 | ForceCCPRequest |<======================| F9 |<------------------| | | | ForceCCPResponse | | | F10 |------------------>| | | | REGISTER : | | | F11 |==================>| REGISTER | | F12 | : INVITE |---------->| | F13 |<==================| 200 R | | F14 | : 200 R |<----------| | F15 |<==================| | | | 200 I : | | | F16 |==================>| 200 I | | | : |======================>| 200 I | : | | |========> : : : : : | REGISTER : | | | F17 |------------------>| REGISTER | | | : |==========>| | | : | 200 R | | | : 200 R |<==========| | |<------------------| | | Figure 1 F1: The UA sends a REGISTER request over UDP to the edge proxy. F2: The edge proxy proxies the REGISTER request to the registrar using TCP. The registrar sends a 200 OK response to the edge proxy. Petit-Huguenin Expires June 9, 2007 [Page 5] Internet-Draft Outbound fragmentation December 2006 F4: The edge proxy forwards the 200 OK to the UA. F5: The UA sends a STUN Binding Request to the edge proxy to keep the binding alive. F6: The edge proxy responds by sending a Binding Response to the UA. F7: The home proxy receives an INVITE request. F8: The home proxy queries the registrar (not shown in the diagram), and proxies the request to the edge proxy. F9: The edge proxy finds that the request cannot be sent over the existing UDP flow because the packet size is higher that the MTU. So it sends a STUN ForceCCP Request to the UA. F10: The UA sends a ForceCCP Response to acknowledge the request. F11: The UA immediately creates a new flow over TCP by sending a REGISTER. F12: The edge proxy proxies the REGISTER request to the registrar using TCP. F13: The edge proxy now proxies the INVITE request over the newly created TCP flow. The registrar sends a 200 OK response to the edge proxy. F15: The edge proxy forwards the 200 OK to the UA. F16: The UA responds to the INVITE request by sending a 200 OK response over the TCP flow. F17: After some time, a new REGISTER is sent over UDP to create a new flows and the TCP connection is shutdown. Petit-Huguenin Expires June 9, 2007 [Page 6] Internet-Draft Outbound fragmentation December 2006 Figure 2 Endpoint : Edge Registrar Home | : | | | | REGISTER : | | | F1 |------------------>| REGISTER | | F2 | : |---------->| | | : | 200 R | | F3 | : 200 R |<----------| | F4 |<------------------| | | | : | | | INVITE F7 | : | | INVITE |<======== F8 | : INVITE |<======================| F9 |<------------------| | | | REGISTER : | | | F10 |==================>| REGISTER | | F11 | : |---------->| | F12 | : | 200 R | | F13 | : 200 R |<----------| | F14 |<==================| | | | 6?? I : | | | F15 |------------------>| | | | : ACK | | | F16 |<------------------| | | | : INVITE | | | F17 |<==================| | 200 I : | | | F18 |==================>| 200 I | | F19 | : |======================>| 200 I F20 | : | | |========> Figure 2 7. Norminative References [I-D.ietf-sip-outbound] Jennings, C. and R. Mahy, "Managing Client Initiated Connections in the Session Initiation Protocol (SIP)", draft-ietf-sip-outbound-05 (work in progress), October 2006. [I-D.petithuguenin-sip-fragmentation-responses] Petit-Huguenin, M., "Preventing IP Fragmentation in Responses for the Session Initiation Protocol (SIP)", draft-petithuguenin-sip-fragmentation-responses-00 (work in progress), October 2006. Petit-Huguenin Expires June 9, 2007 [Page 7] Internet-Draft Outbound fragmentation December 2006 Author's Address Marc Petit-Huguenin 8x8, Inc. 3151 Jay Street Santa Clara, CA 95054 US Phone: +1 408 654 0875 Email: marc@8x8.com Petit-Huguenin Expires June 9, 2007 [Page 8] Internet-Draft Outbound fragmentation December 2006 Full Copyright Statement Copyright (C) The Internet Society (2006). This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights. This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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. Intellectual Property The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79. Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr. The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org. Acknowledgment Funding for the RFC Editor function is provided by the IETF Administrative Support Activity (IASA). Petit-Huguenin Expires June 9, 2007 [Page 9]