summaryrefslogtreecommitdiffstats
path: root/src/vnet/tcp/tcp_output.c
AgeCommit message (Collapse)AuthorFilesLines
2020-02-14tcp: improve reset generation in reset nodeFlorin Coras1-52/+40
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I7a4a4a52c3e4ad47aabb2ef5f53a0e0bb7e71690
2020-02-14tcp: minimal set of worker statsFlorin Coras1-0/+4
Type: feature Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I9dafe564229095d50285276a654f4983f93faff2
2020-01-28session tcp: fix packet tracingFlorin Coras1-6/+7
Type: fix Change-Id: Ib823d016c64998779fb1d00b8aad3acb5e8340be Signed-off-by: Florin Coras <fcoras@cisco.com>
2020-01-09tcp: fix persist assertFlorin Coras1-4/+1
Type: fix Persist and retransmit can pop at the same time. Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ia9530645cc84c83a881a75d7b4627197dc50ed29
2019-12-06tcp: fix tail rescue with sacksFlorin Coras1-5/+7
Type: fix Change-Id: Iad73f47cef3d29c4b0b7d1f58f2f2b14ba4b1d38 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-11-25tcp: invalidate expired timer handles before dispatchingFlorin Coras1-16/+4
Type: fix Change-Id: Icc8cd05cb9c1844a9f8b0399797ad554f4ccf1a1 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-11-21tcp: add no csum offload config optionFlorin Coras1-25/+11
Type: feature Change-Id: I77b3ee74229f3c85e99f74bf9000cb5aedbc1760 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-11-20session tcp: support pacer idle timeoutsFlorin Coras1-20/+5
Type: feature To avoid excessive bursts, pacer must be provided with an estimated rtt for the connection. That's used to compute an idle timeout, i.e., time after which the bucket is reset to 1 mtu due to inactivity. For now, idle timeout is computed as 5% of the rtt. Change-Id: Ia0b752fe7b4ad0ce97b477fb886b0133a2321541 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-11-16tcp: close session on retransmit failureFlorin Coras1-0/+1
Type: fix Since the connection is closed, also mark the session as closed. Change-Id: Ica3849c3ff12fa7a65ba64e563a60d6c94f5ceca Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-11-11tcp: improve lost rxt heuristicFlorin Coras1-0/+5
Type: feature - retransmit first unacked segment if newer retransmitted packets are acked - avoid spurious retransmits if recovery ends with sacked bytes Change-Id: Ic1b56d22e025822edb7609afb136e47440ea6032 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-11-10tcp: avoid retransmits post resetFlorin Coras1-0/+3
Type: fix Change-Id: Ib6a8f5ca597389700e5746f089a5cec7eee65ab5 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-11-07tcp: fix retransmit with no sacksFlorin Coras1-7/+11
Type: fix Change-Id: I6f7df0d358f57f7feadb9b7a3fcffb99558b2af8 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-11-06tcp: IPv6 flow label supportTarun Gupta1-6/+10
Type:feature For cases when proxy is in use IPv6 flow label received in origin pkt needs to be added to ipv6 header of outgoing pkts from proxy to original destination and vice versa. Signed-off-by: Tarun Gupta <tarungup@cisco.com> Change-Id: I143f7e67237c0f865333078628a016b50ad5e630 Signed-off-by: Tarun Gupta <tarungup@cisco.com>
2019-11-05session tcp: refactor pacer timeFlorin Coras1-11/+3
Type: refactor Change-Id: Ic1c3e1f7987702cd88972acc34849dc1f585d5fe Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-10-23tcp: improve rate samples for retansmitted segmentsFlorin Coras1-8/+19
Type: fix - Initialize max_seq on both transmitted and retransmitted segments - Keep track of segments that have been sacked. - Track new data segments sent during recovery Change-Id: Ice55231a3da200ae6171702e54b2ce155f831143 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-10-23tcp: fix sack retransmit beyond snd_nxtFlorin Coras1-2/+7
Type: fix Ensure that sack retransmit logic does not try to inadvertently send new data. Change-Id: Idfda19643577d9c1b58e2af8d8283cabfbaf98e6 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-10-17session tcp: infra for transports to send buffersFlorin Coras1-56/+7
Type: feature Add infra that allows transpors to enqueue pending buffers without the need to build and manage their own pending frames. An important benefit is the fact that buffer wire/tx ordering is ensured by session layer. Change-Id: I764fd1693d610b321a1d0c84b648a314f14583db Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-10-17tcp: avoid sending acks when data availableFlorin Coras1-4/+19
Type: fix Change-Id: I02e2cb2d349f9ddb2bfed040a08ca448f379d565 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-10-16tcp: avoid head retransmit if scoreboard has no holesFlorin Coras1-1/+2
Type: fix Change-Id: I6164ad0d97cd91b60c85302eff691836d12a0a70 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-10-11tcp: refactor flags into cfg and conn flagsFlorin Coras1-9/+9
Type: refactor Change-Id: Ib5e2ecf55732599e1322736e3662178c9da49c7d Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-10-10tcp: improve pacing after idle send periodsFlorin Coras1-48/+65
Rest pacer on ack reception if we haven't recently sent anything. Type: feature Change-Id: I820bacd81b65130052dfafbfcbe6ca4553069fbc Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-10-10tcp: retry lost retransmitsFlorin Coras1-5/+39
Add heuristic that detects lost retransmitted segments and retries sending them. Type: feature Change-Id: I34d1bb16799e1993779222eb2bfad4b40704159e Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-10-10tcp: custom checksum calculations for Ipv4/Ipv6Srikanth A1-22/+94
Type: feature Based on the configuration, we can disable checksum offload capability and calculate checksum while pushing the TCP & IP header. This saves some cycles when VPP stack is used in legacy hardware devices. Signed-off-by: Srikanth A <srakula@cisco.com> Change-Id: Ic1b3fcf3040917e47ee65263694ebf7437ac5668 (cherry picked from commit 3642782a2748503f5b5ccf89d1575c1d489948ef)
2019-10-10tcp: fix tso not work in single buffer issueSimon Zhang1-5/+8
Type: fix Signed-off-by: Simon Zhang <yuwei1.zhang@intel.com> Change-Id: Iddb6fd41812e8c97af58859ef43279cfc0f9d1df Signed-off-by: Simon Zhang <yuwei1.zhang@intel.com>
2019-10-08tcp: rate sample for persist segmentsFlorin Coras1-0/+6
Type: fix Change-Id: I7c38d2ad6364f098529f51c15b533eb234b82716 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-09-25tcp: use sacks for timer based recoveryFlorin Coras1-70/+118
Type: feature If available, reuse sack scoreboard in timer triggered retransmit to minimize spurious retransmits. Additional changes/refactoring: - limited transmit updates - add sacked rxt count to scoreboard - prr pacing of fast retransmits - startup pacing updates - changed loss window to flight + mss Change-Id: I057de6a9d6401698bd1031d5cf5cfbb62f2bdf61 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-09-10tcp: enable gso in tcp hoststackSimon Zhang1-0/+28
Type: feature Change-Id: If68d07fbe8c6f7fffd2f93c7e854367082927e4f Signed-off-by: Simon Zhang <yuwei1.zhang@intel.com>
2019-09-10tcp: validate connections in outputFlorin Coras1-9/+46
Type: feature This shouldn't happen unless connections are removed after buffers were enqueued to tcp-output and before tcp-output runs. For instance, packet is enqueued to tcp output and cleanup is called for connection. Change-Id: Ib7dd82ffa6cfb21ff5068aba010e0a3497eeea13 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-09-03tcp: send rwnd update only if wnd is large enoughFlorin Coras1-7/+7
Type: feature Change-Id: I3e97e05a31806afb6b2e84ecf05fb96d285db92e Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-08-30tcp: force zero window on full rx fifoFlorin Coras1-1/+4
Type: feature Change-Id: I7c5684a9f88e56fd62d83a59c14c4e4a6f096b89 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-08-30tcp: improve mss computationFlorin Coras1-41/+5
Type: fix Use different mss for v4 and v6 packets. Change-Id: Ifcd322c1fd74f749a42bae671dd6cfed8c32b150 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-08-21tcp: add option for always on event loggingFlorin Coras1-19/+19
Type: feature Add option to always compile in debugging infra. Debug verbosity can be controlled via configuration updatable via cli. Compile time inclusion and configuration of event logging verbosity is still available in order to minimize event logging impact. Change-Id: I9d946efe9fa4204fdace1adb1d6588c97b5ae758 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-08-20tcp: forward conn resets through tcp-outputFlorin Coras1-32/+20
Type: refactor Change-Id: I5718853d89ebeae9d66be975a803a3674bec5986 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-08-14tcp: extend protocol configurationFlorin Coras1-14/+6
Type: feature Expose more configuration parameters and refactor some of the existing ones. Change-Id: If44c31ff77ce3d7e8da67d39a4ff61346bdf5ccc Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-08-08tcp: cleanup timersFlorin Coras1-82/+96
Type:refactor Change-Id: I37dbc8b55827d66c2578d6ab8b86ed7e18198aa6 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-08-02tcp: add more connection statsFlorin Coras1-3/+12
Type:feature Change-Id: If02884d0f1f26bfe31ec609ea9611cb27b699868 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-08-01tcp: honor snd_wnd in fast rxtFlorin Coras1-1/+4
Type:fix Change-Id: I2f4224a53360f533c086ebde6a3056e60431da87 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-07-26tcp: count resets sentFlorin Coras1-0/+4
Type:feature Change-Id: Ie1ab4b24af9c654d5e0ed94b7fa96ca195b01c56 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-07-26session tcp: handle rxt and acks as custom eventsFlorin Coras1-52/+115
Type: feature Control ack generation and retransmissions with session layer scheduler. Change-Id: Iacdf9f84ab81f44851980aa45a83e75f29be2b7b Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-07-05tcp: timestamp adjustmentVladimir Kropylev1-2/+2
Type: feature Change-Id: Icb3c574100cde95ab5be4923c8739889cf7e48c6 Signed-off-by: Vladimir Kropylev <vladimir.kropylev@enea.com>
2019-07-05tcp: add cc algo start tx eventFlorin Coras1-0/+3
Type: feature Notify cc algos that new data is sent on a connection that was apparently idle. Change-Id: I892e5e9bb5b88d791265ffbbefce6f9694d01970 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-07-05tcp: add loss signal to cc algoFlorin Coras1-14/+11
Type:feature Change-Id: Ibe1a4c555b55fb929d55b02599aaf099ed522cdf Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-06-25tcp: window update ackVladimir Kropylev1-0/+27
Type: feature Provide interface for sending Window Update ACK, ensuring it will be sent only once, if RWND became non-zero, after zero RWND has been advertised before. Change-Id: I7f0d8af76d7763208625df68ab4ac3727fdaf449 Signed-off-by: Vladimir Kropylev <vladimir.kropylev@enea.com>
2019-06-25tcp: delivery rate estimatorFlorin Coras1-1/+20
Type: feature First cut implementation with limited testing. The feature is not enabled by default and the expectation is that cc algorithms will enable it on demand. Change-Id: I92b70cb4dabcff0e9ccd1d725952c4880af394da Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-06-21tcp: add option to pass opaque to next nodeFlorin Coras1-1/+5
Type:feature Change-Id: I0b72954a6ae6a05abe0761cb4f227072863f127b Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-06-18tcp: allow custom output next nodeFlorin Coras1-0/+3
Type: feature Change-Id: If9804d3685d2a52efa06e412ae1ebb39c6a44b8b Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-06-12tcp: better estimate snd space for rxt with no sacksFlorin Coras1-2/+2
Type: refactor Use tcp_available_cc_snd_space instead of sack scoreboard last_delivered_bytes to estimate available space when retransmitting with no sack support Change-Id: I938c637279eaf8c5634c4e97f0633fa2d0054fac Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-06-08tcp: close connection if not recovered after max triesFlorin Coras1-0/+13
Type: feature Change-Id: Ia8af6a62a2be2265bc42955d90e8c2222bdb8f50 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-04-02tcp: improve rcv process ack processingFlorin Coras1-1/+0
- Avoid doing cc in closing states. - Rest connections closed with unread data Change-Id: I97d46b0459f03ea5439eeb0f233b6c17d3e06dfd Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-03-29tcp: remove sent rcv wnd 0 flagFlorin Coras1-10/+0
Change-Id: If6c672d1caa8884eb5d819311606a79a3de81200 Signed-off-by: Florin Coras <fcoras@cisco.com>