Internet DRAFT - draft-thejeswara-tcpm-tcp-fwa

draft-thejeswara-tcpm-tcp-fwa







TCPM Working Group                                         R. Thejeswara
Internet-Draft                                                H. Kothari
Intended status: Informational                          S. Chinthalapudi
Expires: 6 March 2024                                            Samsung
                                                        3 September 2023


                  TCP FWA: Fast Window Advance for TCP
                    draft-thejeswara-tcpm-tcp-fwa-01

Abstract

   This document describes TCP Fast Window Advance (FWA) flag in TCP
   Header to avoid the Head of Line Blocking in TCP long alive
   connections and in TCP long fat networks.  FWA flag shall be set by
   the sender to force the TCP receiver to change its expected sequence
   number.  This allows the application sender to send fresh application
   session data to receiver on the existing TCP connection without
   blocking on the earlier session.  The FWA flag will solve long
   standing Head of Line (HOL) blocking problem in TCP for certain TCP
   applications.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   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."

   This Internet-Draft will expire on 6 March 2024.

Copyright Notice

   Copyright (c) 2023 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents (https://trustee.ietf.org/
   license-info) in effect on the date of publication of this document.
   Please review these documents carefully, as they describe your rights



Thejeswara, et al.        Expires 6 March 2024                  [Page 1]

Internet-Draft                   TCP FWA                  September 2023


   and restrictions with respect to this document.  Code Components
   extracted from this document must include Revised BSD License text as
   described in Section 4.e of the Trust Legal Provisions and are
   provided without warranty as described in the Revised BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   3
   3.  Definitions . . . . . . . . . . . . . . . . . . . . . . . . .   3
   4.  Session Failure Problem . . . . . . . . . . . . . . . . . . .   4
     4.1.  IMS Session . . . . . . . . . . . . . . . . . . . . . . .   4
     4.2.  Current approaches  . . . . . . . . . . . . . . . . . . .   5
   5.  TCP Header Modification . . . . . . . . . . . . . . . . . . .   5
   6.  FWA Operation . . . . . . . . . . . . . . . . . . . . . . . .   6
     6.1.  FWA behaviour . . . . . . . . . . . . . . . . . . . . . .   8
       6.1.1.  Impact on TLS . . . . . . . . . . . . . . . . . . . .   8
       6.1.2.  Impact on Middle Boxes  . . . . . . . . . . . . . . .   8
       6.1.3.  Impact on Good put  . . . . . . . . . . . . . . . . .   8
   7.  Example usage . . . . . . . . . . . . . . . . . . . . . . . .   9
   8.  Security Considerations . . . . . . . . . . . . . . . . . . .   9
   9.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   9
   10. References  . . . . . . . . . . . . . . . . . . . . . . . . .   9
     10.1.  Normative References . . . . . . . . . . . . . . . . . .   9
     10.2.  Informative References . . . . . . . . . . . . . . . . .  10
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  11

1.  Introduction

   Transmission Control Protocol (TCP) is described in [RFC9293]
   provides the robust and reliable transport layer protocol.  TCP
   recovers data that is damaged, lost, duplicated, or delivered out of
   order by the internet communication system.  This is achieved by
   assigning a sequence number to each octet transmitted, and requiring
   a positive acknowledgment (ACK) from the receiving TCP.  If the ACK
   is not received within a timeout interval, the data is retransmitted
   by sender.  At the receiver, the sequence numbers are used to
   correctly order segments that may be received out of order and to
   eliminate duplicates and error detection is performed by using
   checksum.  Any loss of segments or error segments requires at
   retransmission by TCP sender.

   TCP receiver uses the ACK field to acknowledge the sequence numbers
   it has received and can optionally use the SACK option to report the
   sequence numbers received in out of order.






Thejeswara, et al.        Expires 6 March 2024                  [Page 2]

Internet-Draft                   TCP FWA                  September 2023


   Certain applications such as 3GPP VoLTE/VoNR(Voice over LTE/Voice
   over NR) have SIP session timers over TCP connections to wait for
   response from server.  Once SIP Session timeout occurs, application
   treats that session as failure and continues with next session.  At
   this point, TCP is unaware of session failure and it continues to
   retransmit unacknowledged segments of previous SIP session, and IMS
   application on receiver side receives the stale SIP session and
   replies to session.

   Once the SIP session is treated as failed, the IMS application
   generate the new SIP session, the new SIP session will have different
   session tokens from previous session, so the IMS application will
   reject any further responses to old SIP session from the receiver.
   SIP receiver sends the response to old sessions, as a result IMS/SIP
   sender either terminates the current session or has to ignore the old
   SIP response messages

   As a result, in intermit network conditions new SIP session data is
   either buffered or failed with TCP HOL blocking.  As in [IMS]
   architecture TCP data buffering can occur at multiple intermediaries
   in the end-to-end network topology of IMS Network.

2.  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in BCP
   14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

3.  Definitions

   We repeat here some of the definitions from [RFC5681] to aid the
   reader.

   SENDER MAXIMUM SEGMENT SIZE (SMSS): The SMSS is the size of the
   largest segment that the sender can transmit.  This value can be
   based on the maximum transmission unit of the network, the path MTU
   discovery [RFC1191], [RFC4821] algorithm, RMSS (see next item), or
   other factors.  The size does not include the TCP/IP headers and
   options.

   RECEIVER MAXIMUM SEGMENT SIZE (RMSS): The RMSS is the size of the
   largest segment the receiver is willing to accept.  This is the value
   specified in the MSS option sent by the receiver during connection
   startup.  Or, if the MSS option is not used, it is 536 bytes
   [RFC1122].  The size does not include the TCP/IP headers and options.




Thejeswara, et al.        Expires 6 March 2024                  [Page 3]

Internet-Draft                   TCP FWA                  September 2023


   RECEIVER WINDOW (rwnd): The most recently advertised receiver window.

   CONGESTION WINDOW (cwnd): A TCP state variable that limits the amount
   of data a TCP can send.  At any given time, a TCP MUST NOT send data
   with a sequence number higher than the sum of the highest
   acknowledged sequence number and the minimum of cwnd and rwnd.

   Head of Line Blocking (HOL) : A protocol state TCP can not process
   the received data, until the missing segment is received.

4.  Session Failure Problem

4.1.  IMS Session

   In IMS based applications, SIP Signalling [RFC3261] is performed
   using TCP protocol.When user triggers a voice call, SIP INVITE is
   sent to peer and IMS Stack waits for 1xx response.  SIP INVITE packet
   size is in multiple of TCP Maximum Segment size (MSS) and required
   TCP level segmentation based on the negotiated SMSS with TCP peer
   RMSS during 3-way handshake.This has been observed from field test
   that sometimes complete TCP segments carrying SIP INVITE has not
   reached TCP peer and TCP peer is still waiting for remaining data to
   pass SIP INVITE message to SIP decoder.  SIP Decoder needs complete
   SIP Payload to process the SIP transaction.  Due to intermit network
   conditions, these remaining TCP segments are permanently lost and/or
   unordered.  These received TCP segments received at IMS receiver
   after the Sender IMS Session/transaction timeout.

   SIP Call originator [IMS] has shorter call setup timer duration
   (example: 6 seconds, Call setup timer is configurable by cellular
   network operator) in comparison to overall TCP retransmission
   attempts time out(example : 60 seconds) to conclude call attempt as
   failure.  In such cases, call originator has concluded call attempt
   as failure based on call setup timer and new SIP/IMS call transaction
   is made for retry of session.  At this stage, TCP peer/receiver is
   still waiting for remaining part of previous SIP INVITE(SIP session
   packets).  This leads to session failure or delay for all further
   sessions until TCP connection is reset and re-connected or pending
   data is received and acknowledged by the receiver.

   SIP Over Cellular Networks (IMS), [IMS] recommends IPSec [RFC4301] to
   apply for integrity and authentication protection.  In order to
   configure the inbound and outbound security association [RFC4301],
   client and server negotiates specific ports during IMS Registration
   procedure as described in [IMS] and [RFC3329].  Since both client and
   Server are operating with fixed ports, IMS user doesn't have option
   to re-establish TCP connection with different ports to attain the
   service continuity.  currently for IMS user to recover is to perform



Thejeswara, et al.        Expires 6 March 2024                  [Page 4]

Internet-Draft                   TCP FWA                  September 2023


   IMS De-registration and Re Register with new fixed IPSec Ports But
   this procedure delays IMS session and user is unreachable during re-
   registration period.

4.2.  Current approaches

   The existing methods addresses this problem by changing congestion
   window (cwnd) of the sender based on congestion control algorithms
   example : [RFC9438].  A paper on HOL [OPTHOL] addresses the HOL
   blocking by using Forward Error Correction (FEC).  But congestion
   control algorithms and FEC cannot solve the issue of HOL blocking,
   until the transmitted segments are acknowledged by the TCP receiver
   or recovered by using FEC.  The delayed acknowledgment is causes
   multiple session failures when packet loss probability is high and
   further application transaction fails due to delay in application
   session response.

   TCP application can use TCP User Timeout Option (UTO) [RFC5482] to
   terminate s the session after timeout for unacknowledged data.  But
   this option is not useful for IMS as it impacts session continuity as
   the IMS user needs to re-establish the IMS session after session
   closure.

5.  TCP Header Modification

   This paper proposes to extend TCP flags by utilizing one bit among
   the four reserved bits.  This new control bit is termed as Fast
   Window Advance (FWA) as shown in below figure























Thejeswara, et al.        Expires 6 March 2024                  [Page 5]

Internet-Draft                   TCP FWA                  September 2023


       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |          Source Port          |       Destination Port        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                        Sequence Number                        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                    Acknowledgment Number                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Data |   |F|A|C|E|U|A|P|R|S|F|                               |
      | Offset|Rvd|W|E|W|C|R|C|S|S|Y|I|            Window             |
      |       |   |A| |R|E|G|K|H|T|N|N|                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |           Checksum            |         Urgent Pointer        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                           [ Options ]                         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               :
      :                             Data                              :
      :                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

             Note that one tick mark represents one bit position.

                    Figure 1: Modified TCP Header Format

   where control bit

   FWA : 1 bit

   Fast Window Update

   When application has closed its session as failure and application
   wants TCP layer of both sender and receiver to flush any previous
   data even if application data is not acknowledged by the receiver.

   application can configure setting FWA flag through socket option
   interface.

6.  FWA Operation

   TCP control block in the sender and receiver will store the Sequence
   Number Variables related to the TCP connection such as

   SND.NXT - send next (sequence number to be used to send next data)

   RCV.NXT - receive next (expected sequence number at the receiver)




Thejeswara, et al.        Expires 6 March 2024                  [Page 6]

Internet-Draft                   TCP FWA                  September 2023


   as described in [RFC9293].

   This document adds one such variable (SND.FWS) to TCP control block

   SND.FWS - send fast window to store the sequence number to be used in
   FWA bit (1) Segment

   SND.FWS is set to initial value of ISS (initial send sequence number)
   during the connection establishment.  When the TCP Sender Sends the
   data to receiver.  SND.NXT is updated with next in sequence sequence
   number.  so

   if SND.FWS < SND.NXT then

      <SND.FWS=SND.NXT>

   SND.FWS stores maximum sequence number sent by the TCP in the
   connection.

   When the socket option to set FWA flag is received from the
   application TCP sender will set the FWA Flag in the next in-sequence
   segment to the receiver.  TCP Sender use sequence number as in
   SND.FWS in FWA(1) TCP Segment.  The sender application logic choses
   to set TCP FWA flag to discard any pending previous data at the TCP
   buffers.  Through this socket option TCP sender invokes the FWA
   functionality.

   <SEQ=SND.FWS><ACK=RCV.NXT><CTL=FWA,ACK>

   At the TCP receiver, the FWA flag will force to advance its receiver
   window to set RCV.NXT to same as received sequence number and clear
   any pending data present in the receive buffer up to SND.FWS.

   if (FWA is 1 in TCP FLAGS)

      <RCV.NXT=SEG.SEQ>

   TCP receiver, will acknowledge the change in the RCV.NXT through ACK
   segment to the sender.  TCP sender uses the TCP ACK segment to flush
   the pending buffer in the sender's buffer up to the sequence number
   (RCV.NXT) received in the TCP ACK segment.










Thejeswara, et al.        Expires 6 March 2024                  [Page 7]

Internet-Draft                   TCP FWA                  September 2023


   Through this mode of operation, TCP receiver window will avoid HOL
   blocking of previously timed out/failed transaction and sends ACK to
   sender with updated sequence in ACK field of TCP header.  This will
   allow both sender and receiver to continue next session without any
   HOL blocking caused by previous failed application session.  TCP
   Header with FWA flag operation can clear partial received data that
   is waiting for remaining segments.

6.1.  FWA behaviour

   There is no negotiation needed in TCP handshake to negotiate the
   support of TCP FWA, TCP implementations which does not support FWA
   interpretation of TCP header can continue by ignoring the FWA bit.
   Since the flushing and changing the sequence number depends on
   positive ACK from the receiver.  if the receiver does not support
   FWA, receiver sends the next expected sequence number as per the
   [RFC9293], so sender can not advance the window.

   The receiver after receiving the segment with FWA bit set , should
   not delay the sending of the ACK even though delayed ACK is enabled
   and receiver SHALL repeat sending the ACK every 0.5 secs until
   sequence number from the sender changes from previous SND.FWS
   sequence number.  This is to accelerate the buffer cleaning procedure
   in the sender and middle boxes.

   The FWA bit does not impact the regular TCP connections which does
   not implement TCP Window Advance (FWA bit) both on sender and
   receiver.

6.1.1.  Impact on TLS

   TLS applications does not set FWA, as it will encounters decryption
   failures when FWA bit is set

6.1.2.  Impact on Middle Boxes

   There is no impact on stateless middle boxes, as these middle boxes
   are transparent or not alter the sequence numbers in between the end
   points.  In stateful middle boxes, shall use the sequence numbers
   mapping between the entities to map the received sequence number,to
   generate the new sequence number of outgoing TCP connections.

6.1.3.  Impact on Good put

   Addition of FWA flag based on senders discretion improves the good
   put of the TCP.  As the unnecessary retransmissions for timed out
   applications sessions are avoided.




Thejeswara, et al.        Expires 6 March 2024                  [Page 8]

Internet-Draft                   TCP FWA                  September 2023


7.  Example usage

   example to describe the socket option usage:

   int setsockopt(int socket_descriptor, int level, int option_name,
   char *option_value, int option_length)

   socket_descriptor : socket id

   level : IPPROTO_TCP

   option_name : TCP_FWA

   option_value : 0 : TCP FWA is not enabled 1 : Enable TCP FWA for the
   tcp connection

   When option_value set to 1 : TCP Sender enables the TCP FWA
   functionality to clear the TCP senders buffer upto send_max

   in TCP FWA function : TCP Sender adds FWA bit to TCP header.  TCP
   Sender sets the sequence number send_max in seq.number field of the
   TCP Header.  TCP Sender sets the last received or sent
   acknowledgement number in acknowledgement filed of TCP Header.

   So application using setsockopt with TCP_FWA Enable(1) has option to
   discard the pending unacknowledged data upto send max sequence
   number.  based on the application transaction status.

8.  Security Considerations

   This document defines a a new flag in TCP Header which do not add any
   new security concerns beyond those discussed in [RFC9293].

9.  IANA Considerations

   This document requests new TCP flag in TCP header to indicate the FWA
   bit.

10.  References

10.1.  Normative References

   [IMS]      3GPP, TS 24.229 V18.0.0., "IP multimedia call control
              protocol based on Session Initiation Protocol (SIP) and
              Session Description Protocol (SDP);Stage 3(Release 18)",
              2020,
              <https://portal.3gpp.org/desktopmodules/Specifications/
              SpecificationDetails.aspx?specificationId=1055>.



Thejeswara, et al.        Expires 6 March 2024                  [Page 9]

Internet-Draft                   TCP FWA                  September 2023


   [OPTHOL]   Mehrotra, S., "An Optimal Solution to Head-of-Line
              Blocking", 2020, <https://www.microsoft.com/en-
              us/research/uploads/prod/2020/02/paper.pdf>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC3261]  Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
              A., Peterson, J., Sparks, R., Handley, M., and E.
              Schooler, "SIP: Session Initiation Protocol", RFC 3261,
              DOI 10.17487/RFC3261, June 2002,
              <https://www.rfc-editor.org/info/rfc3261>.

   [RFC5681]  Allman, M., Paxson, V., and E. Blanton, "TCP Congestion
              Control", RFC 5681, DOI 10.17487/RFC5681, September 2009,
              <https://www.rfc-editor.org/info/rfc5681>.

   [RFC9293]  Eddy, W., Ed., "Transmission Control Protocol (TCP)",
              STD 7, RFC 9293, DOI 10.17487/RFC9293, August 2022,
              <https://www.rfc-editor.org/info/rfc9293>.

   [RFC9438]  Xu, L., Ha, S., Rhee, I., Goel, V., and L. Eggert, Ed.,
              "CUBIC for Fast and Long-Distance Networks", RFC 9438,
              DOI 10.17487/RFC9438, August 2023,
              <https://www.rfc-editor.org/info/rfc9438>.

10.2.  Informative References

   [RFC1122]  Braden, R., Ed., "Requirements for Internet Hosts -
              Communication Layers", STD 3, RFC 1122,
              DOI 10.17487/RFC1122, October 1989,
              <https://www.rfc-editor.org/info/rfc1122>.

   [RFC1191]  Mogul, J. and S. Deering, "Path MTU discovery", RFC 1191,
              DOI 10.17487/RFC1191, November 1990,
              <https://www.rfc-editor.org/info/rfc1191>.

   [RFC3329]  Arkko, J., Torvinen, V., Camarillo, G., Niemi, A., and T.
              Haukka, "Security Mechanism Agreement for the Session
              Initiation Protocol (SIP)", RFC 3329,
              DOI 10.17487/RFC3329, January 2003,
              <https://www.rfc-editor.org/info/rfc3329>.

   [RFC4301]  Kent, S. and K. Seo, "Security Architecture for the
              Internet Protocol", RFC 4301, DOI 10.17487/RFC4301,
              December 2005, <https://www.rfc-editor.org/info/rfc4301>.



Thejeswara, et al.        Expires 6 March 2024                 [Page 10]

Internet-Draft                   TCP FWA                  September 2023


   [RFC4821]  Mathis, M. and J. Heffner, "Packetization Layer Path MTU
              Discovery", RFC 4821, DOI 10.17487/RFC4821, March 2007,
              <https://www.rfc-editor.org/info/rfc4821>.

   [RFC5482]  Eggert, L. and F. Gont, "TCP User Timeout Option",
              RFC 5482, DOI 10.17487/RFC5482, March 2009,
              <https://www.rfc-editor.org/info/rfc5482>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.

Authors' Addresses

   Thejeswara Reddy
   Samsung
   Outer Ring Road
   Bangalore 560048
   Karnataka
   India
   Email: thejeswar.p@samsung.com


   Harsh Kothari
   Samsung
   Outer Ring Road
   Bangalore 560048
   Karnataka
   India
   Email: harsh.mk@samsung.com


   Srinivas Chinthalapudi
   Samsung
   Outer Ring Road
   Bangalore 560048
   Karnataka
   India
   Email: srinivas.y84@samsung.com












Thejeswara, et al.        Expires 6 March 2024                 [Page 11]