summaryrefslogtreecommitdiffstats
path: root/src/vnet/tcp/tcp.h
AgeCommit message (Collapse)AuthorFilesLines
2019-11-18session tcp: infra for transports to send buffersFlorin Coras1-4/+0
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> (cherry picked from commit 2a7ea2ee92d6dc4800ee21323d3324a9e8449dcf)
2019-11-12tcp: fix retransmit with no sacksFlorin Coras1-1/+2
Type: fix Change-Id: I6f7df0d358f57f7feadb9b7a3fcffb99558b2af8 Signed-off-by: Florin Coras <fcoras@cisco.com> (cherry picked from commit bf1f8b7f288c29bfcc128b1d09eae1c1eac2b7cc)
2019-11-05tcp: track lost rxt segments in byte trackerFlorin Coras1-0/+1
Type: feature Change-Id: I18dfac9c3d2f539edf20dba64cd2b7b541154144 Signed-off-by: Florin Coras <fcoras@cisco.com> (cherry picked from commit 46ec6e018e95a10d46d018dbc15d90c309b5dccc)
2019-11-05tcp: avoid sending acks when data availableFlorin Coras1-0/+1
Type: fix Change-Id: I02e2cb2d349f9ddb2bfed040a08ca448f379d565 Signed-off-by: Florin Coras <fcoras@cisco.com> (cherry picked from commit cb711a4ec908b89edc9da29d3c2e093dab85fbbf)
2019-10-31tcp: improve rate samples for retansmitted segmentsFlorin Coras1-2/+3
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> (cherry picked from commit d6ae4bf13a7819d64d128d196d491af4700fa948)
2019-10-29tcp: refactor flags into cfg and conn flagsFlorin Coras1-7/+33
Type: refactor Change-Id: Ib5e2ecf55732599e1322736e3662178c9da49c7d Signed-off-by: Florin Coras <fcoras@cisco.com> (cherry picked from commit bbcfaac9571004d87998684c123354667b726532)
2019-10-29tcp: improve pacing after idle send periodsFlorin Coras1-0/+1
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> (cherry picked from commit c31dc31f84961033ecb6354811e0c360b6cf5f79)
2019-10-27tcp: retry lost retransmitsFlorin Coras1-4/+5
Add heuristic that detects lost retransmitted segments and retries sending them. Type: feature Change-Id: I34d1bb16799e1993779222eb2bfad4b40704159e Signed-off-by: Florin Coras <fcoras@cisco.com> (cherry picked from commit be237bf02382854118986e8ea84c7544e42023f2)
2019-10-10tcp: custom checksum calculations for Ipv4/Ipv6Srikanth A1-0/+3
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
2019-10-02tcp: use sacks for timer based recoveryFlorin Coras1-27/+25
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> (cherry picked from commit 36ebcfffbc7ab0e83b4bb8dfaec16bf16cafb954)
2019-09-30tcp: compute snd time for rate sampleFlorin Coras1-2/+2
Type: feature Change-Id: I6bd675dc28dbc34293e895911efe986844c0564f Signed-off-by: Florin Coras <fcoras@cisco.com> (cherry picked from commit 7436b436733ea7217e745f3cc9971aaff1e3dfa4)
2019-09-29tcp: handle sack renegingFlorin Coras1-1/+1
Type: feature Change-Id: I201155b1b92cf7e57310af726879dab039090582 Signed-off-by: Florin Coras <fcoras@cisco.com> (cherry picked from commit 558e3e09577a7b49e2fec58e8ac27f3f3ae0592f)
2019-09-29tcp: enable gso in tcp hoststackSimon Zhang1-0/+2
Type: feature Change-Id: If68d07fbe8c6f7fffd2f93c7e854367082927e4f Signed-off-by: Simon Zhang <yuwei1.zhang@intel.com> (cherry picked from commit 1146ff4bcd336d8efc19405f1d83914e6115a01f)
2019-09-29tcp: send rwnd update only if wnd is large enoughFlorin Coras1-0/+4
Type: feature Change-Id: I3e97e05a31806afb6b2e84ecf05fb96d285db92e Signed-off-by: Florin Coras <fcoras@cisco.com> (cherry picked from commit 017dc45243bad1b3708d0a9b902d23ca47859344)
2019-09-29tcp: improve mss computationFlorin Coras1-1/+0
Type: fix Use different mss for v4 and v6 packets. Change-Id: Ifcd322c1fd74f749a42bae671dd6cfed8c32b150 Signed-off-by: Florin Coras <fcoras@cisco.com> (cherry picked from commit cedcf608fefc5bdeff13bb0914fa15266e971d7c)
2019-09-24tcp: add option for always on event loggingFlorin Coras1-1/+1
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> (cherry picked from commit a436a42221280888acd09858c7353e694c359bca)
2019-09-20tcp: set cc_algo on connection allocFlorin Coras1-0/+2
Type: feature Change-Id: Ie00329b11e26cab5db64b9c006171d283854c8ef Signed-off-by: Florin Coras <fcoras@cisco.com> (cherry picked from commit 12f6936cd8f69f17820ef749515fcf4d50001c60)
2019-09-20tcp: allow cc algos to set pacing rateFlorin Coras1-0/+13
Type: feature Change-Id: Ie7f0f5d2a476d401ede567e422abb953b2bb4a78 Signed-off-by: Florin Coras <fcoras@cisco.com> (cherry picked from commit d206724e78d99aee5d91d43fb0832d51d70eb57a)
2019-08-14tcp: extend protocol configurationv19.08-rc2Florin Coras1-55/+82
Type: feature Ticket: VPP-1736 Expose more configuration parameters and refactor some of the existing ones. Change-Id: If44c31ff77ce3d7e8da67d39a4ff61346bdf5ccc Signed-off-by: Florin Coras <fcoras@cisco.com> (cherry picked from commit 9094b5c319d3f072d3c248fe7c876e4048c13ac2)
2019-08-09tcp: fix zero rwnd sent checkFlorin Coras1-1/+1
Type:fix Change-Id: I1e6f2cb28c1bf544cc3d060b11c8935f9edb0eed Signed-off-by: Florin Coras <fcoras@cisco.com> (cherry picked from commit d1ba3d257788f1a65016a50a53d85f2b905874bb)
2019-08-09tcp: cleanup timersFlorin Coras1-4/+1
Type:refactor Change-Id: I37dbc8b55827d66c2578d6ab8b86ed7e18198aa6 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-08-02tcp: add more connection statsFlorin Coras1-3/+31
Type:feature Change-Id: If02884d0f1f26bfe31ec609ea9611cb27b699868 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-07-26tcp: count resets sentFlorin Coras1-0/+3
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-19/+5
Type: feature Control ack generation and retransmissions with session layer scheduler. Change-Id: Iacdf9f84ab81f44851980aa45a83e75f29be2b7b Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-07-10tcp: improve rate estimateFlorin Coras1-4/+10
Type:feature - sample rtt estimation - report acked+sacked - report last lost bytes - use snd_una == snd_nxt to detect 0 bytes in flight Change-Id: I83181261fdb375c7e33d24b7a82343561e6a905f Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-07-09tcp: track last lost bytes in sack sbFlorin Coras1-0/+1
Type:feature Change-Id: I687809ebcc759cec8cb1d5c3b2b7e6bc995a7985 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-07-05tcp: timestamp adjustmentVladimir Kropylev1-0/+11
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/+13
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 cc algo undo recovery notificationFlorin Coras1-0/+14
Type:feature Change-Id: Iedefe87555f0a0033abed8569bc2995c8f523d7e Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-07-05tcp: add loss signal to cc algoFlorin Coras1-3/+10
Type:feature Change-Id: Ibe1a4c555b55fb929d55b02599aaf099ed522cdf Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-06-27tcp: Setup initial CWND as configuredVladimir Kropylev1-0/+7
Type: feature Change-Id: I7f476f4f81994c9c6cc2e8091de08adff4bcbc77 Signed-off-by: Vladimir Kropylev <vladimir.kropylev@enea.com>
2019-06-25tcp: window update ackVladimir Kropylev1-0/+6
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-12/+127
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/+2
Type:feature Change-Id: I0b72954a6ae6a05abe0761cb4f227072863f127b Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-06-18tcp: allow custom output next nodeFlorin Coras1-0/+1
Type: feature Change-Id: If9804d3685d2a52efa06e412ae1ebb39c6a44b8b Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-06-11tcp: allow registration of new cc algo typesFlorin Coras1-4/+14
Type: feature Change-Id: I83e21b508a19df1beb207d961c8f2b52347deca0 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-06-08tcp: close connection if not recovered after max triesFlorin Coras1-0/+1
Type: feature Change-Id: Ia8af6a62a2be2265bc42955d90e8c2222bdb8f50 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-06-07tcp: add cc cleanup functionFlorin Coras1-0/+1
Type: feature Change-Id: I54521078cf96e459d041c86297c6ca80045bf0a3 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-04-02tcp: improve rcv process ack processingFlorin Coras1-0/+1
- 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-1/+0
Change-Id: If6c672d1caa8884eb5d819311606a79a3de81200 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-03-28tcp: remove unused buffer flagsFlorin Coras1-20/+0
Change-Id: I86e71f32dee3cc48f680e6432a96caef0a7f66a1 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-03-27tcp: add cc algo lookup tableFlorin Coras1-0/+3
Change-Id: Ie7be0136c182cdc35193e47dd3249153c2f8d65e Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-03-23tcp: make default mtu configurableFlorin Coras1-0/+3
Change-Id: I56d8d8d67d5590e24c1ddb54b0c63a2cb03798e1 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-03-22tcp: improve handling of snd_nxtFlorin Coras1-2/+2
- avoid changing snd_nxt when doing fast retransmits - use snd_una_max only to keep track of the max seq number sent - simplify future ack testing Change-Id: I3580ad3aefe30128486c3375d0ac3f3f62c04c5e Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-03-08session/tcp/vcl: fixes and optimizationsFlorin Coras1-1/+2
Change-Id: Idc7dfe743399dd8dee0f6b3ec83f194f3fca580b Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-03-06tcp: migrate old MULTIARCH macros to VLIB_NODE_FNFilip Tehlar1-0/+8
Change-Id: Ifd9fa30eed343e2c5d40582b3e3aa589b070637d Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
2019-03-02session: cleanup/rename functionsFlorin Coras1-1/+1
- remove unused functions - rename old "stream" functions Change-Id: Icbb03daa9f9f1c58b5be5c38aa8a9cbcf9159b47 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-02-22tcp: keep snd sack block free listFlorin Coras1-0/+1
Instead of constantly reallocating the new sack block list, keep the old one as a reusable free list. Change-Id: Iad79a72204f97b96352c1c6eea66c2839a35cfe6 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-02-22tcp: send enough dupacks to cover all sack holesFlorin Coras1-0/+1
Make sure we send enough dupacks to cover all the holes created in the last frame received. Also make sure we send all the blocks, not just the first. Change-Id: I9597a34ac14473d1cc3ad07d65bc37043e3d0582 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-02-18tcp: harden for high scale scenariosFlorin Coras1-1/+1
- Better handle buffer starvation scenarios - Handle case when both peers enter recovery due to packet loss. - Fix passive open establish cleanup Change-Id: I2f28baa2ff0383bb8f5f6d2452b49aa38ce69bce Signed-off-by: Florin Coras <fcoras@cisco.com>