summaryrefslogtreecommitdiffstats
path: root/src/vnet/tcp/tcp.c
AgeCommit message (Collapse)AuthorFilesLines
2020-08-03tcp: improve timestamp rtt accuracyFlorin Coras1-6/+1
- switch to using vlib_time as reference for timestamps - use us precision ticks for tcp but keep using ms precision for timestamps. As a result, srtt, rttvar and rto are now measured in us instead of ms. MRTT samples from timestamps are converted from ms to us (not accurate under ms) while high precision samples are used with us precision, i.e., they're no longer converted to ms precision samples. Type: improvement Change-Id: Ibda559575d9b4fdc85b0985264f7c865ff367e34 Signed-off-by: Florin Coras <fcoras@cisco.com>
2020-07-23tcp: track pending timersFlorin Coras1-1/+8
Also removes delack timer and reuses the u32 for the pending timers list. Type: fix Ticket: VPP-1923 Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I4edbb72d5b2aa5e14f87659f49e675af1e834aca
2020-04-28vlib: add ASSERT to vlib_time_now(...)Dave Barach1-1/+2
Calling vlib_time_now (&vlib_global_main) from a worker thread is a bad mistake. ASSERT (vm->thread_index == __os_thread_index) will catch it. Type: improvement Signed-off-by: Dave Barach <dave@barachs.net> Change-Id: I55af6de84e06143f8f43adc62103b77267a7a441
2020-04-17tcp: cubic as default cc algorithmFlorin Coras1-1/+1
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I48ce827966667a767440149769eb1b24616ce4c1
2020-04-17session tcp: track half open in app wrkFlorin Coras1-2/+16
Type: improvement Do extra checks when establishing an active connect and cleanup pending connects if application detaches. Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ibe9349db57b313ba2aa5ea3960ef5cf755f5098a
2020-04-15tcp: allow local port sharing if 5-tuple availableFlorin Coras1-1/+14
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Id0c4b46247e7419a328387678a4753cfb1e42d75
2020-04-03session: improve error reportingFlorin Coras1-5/+2
Type: improvement Change-Id: I9dd850a1ce85b0adb5136233f176117e0ee38817 Signed-off-by: Florin Coras <fcoras@cisco.com>
2020-04-02tcp: explicit use of timer wheel in timer apisFlorin Coras1-17/+28
Type: refactor Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I06120d43c15b2fa3f437ef235bf5f83ec2beb45e
2020-04-02tcp: move features to separate filesFlorin Coras1-1052/+1
Type: refactor Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ia477b8dba9266f47907967e363c11048e5cd95ab
2020-03-30tcp: reuse session infra for syns and resetsFlorin Coras1-25/+19
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I71df27049ef0193578f0c42f8f8bbd5c54e4d53e
2020-03-25session: api to add new transport typesFlorin Coras1-0/+2
Type: feature Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: If4dee6dba1ea942daa921d566b35cdecdda680ee
2020-03-19tcp: move accept init to separate reusable functionFlorin Coras1-0/+45
Type: refactor Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I5120eb321e9e2050eb64dca9e2dfb6256ff2b62d
2020-03-19tcp: force deschedule if no send space availableFlorin Coras1-8/+8
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Iae9f118f710153b6c0e390265039db7434e67ed8
2020-03-19session tcp udp: consolidate transport snd apisFlorin Coras1-37/+28
Type: improvement Use only one api to retrieve transport send parameters. Additionally, allow transports to request postponing and descheduling of events. With this, tcp now requests descheduling of sessions when the connections are stuck probing for zero snd_wnd Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I722c974f3e68fa15424c519a1fffacda43af050c
2020-03-10tcp: protect against forced cleanupsFlorin Coras1-0/+2
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I0c3b847044d522f55dfd8262afa7c161d5bd5dd3
2020-02-25tcp: handle cleanups without timersFlorin Coras1-25/+60
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ida896e9fbe83b4c76578b089bb3fd2bef5e07fd2
2020-02-24tcp: dynamic max timers per loopFlorin Coras1-3/+19
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: If0a634c277d4f8e4d32321f52253721a990bdb1d
2020-02-18tcp: add fib to connection cli outputFlorin Coras1-2/+2
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I3de653fd90b8030125b627f751c7fb665ade5aee
2020-02-18tcp: allow custom mss on connectsFlorin Coras1-0/+5
Type: feature Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ie4bd68a387f706b3e6868bece2ec4c8c1d92a9c3
2020-02-18tcp: pace timer handlingFlorin Coras1-101/+147
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I93067054631d6ae2411a7b08d7b681aed7a121b2
2020-02-14tcp: reset fin-wait-2 timeout connectionsFlorin Coras1-0/+8
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Id931f3f308a01788d222d0d62f26f5c579321c6a
2020-02-14tcp: minimal set of worker statsFlorin Coras1-6/+84
Type: feature Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I9dafe564229095d50285276a654f4983f93faff2
2020-02-12tcp: move connections to wrk ctxFlorin Coras1-25/+21
Type: refactor Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I06cc3f032a72eacc716eed8d6fe8856a2839def1
2020-02-12tcp: postpone rst handlingFlorin Coras1-50/+0
Type: refactor Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Id09fa54cc5657b3b5616ea6a6180c1344b0141d4
2020-02-10tcp: add option to avoid endpoint cleanupFlorin Coras1-2/+3
Type: feature If set, avoid trying to cleanup the local endpoint table. Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Iaa382ae74523d608217d2d17544bf1e7d82b2728
2020-01-28session tcp: fix packet tracingFlorin Coras1-1/+1
Type: fix Change-Id: Ib823d016c64998779fb1d00b8aad3acb5e8340be Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-12-17ip: Protocol Independent IP NeighborsNeale Ranns1-6/+4
Type: feature - ip-neighbour: generic neighbour handling; APIs, DBs, event handling, aging - arp: ARP protocol implementation - ip6-nd; IPv6 neighbor discovery implementation; separate ND, MLD, RA - ip6-link; manage link-local addresses - l2-arp-term; events separated from IP neighbours, since they are not the same. vnet retains just enough education to perform ND/ARP packet construction. arp and ip6-nd to be moved to plugins soon. Change-Id: I88dedd0006b299344f4c7024a0aa5baa6b9a8bbe Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-11-25tcp: honor cc pacing rate when resetting pacerFlorin Coras1-2/+3
Type: fix Change-Id: I36558b67d38266def9dfe45777d9757a33ce2569 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-11-25tcp: invalidate expired timer handles before dispatchingFlorin Coras1-8/+24
Type: fix Change-Id: Icc8cd05cb9c1844a9f8b0399797ad554f4ccf1a1 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-11-21tcp: add no csum offload config optionFlorin Coras1-0/+6
Type: feature Change-Id: I77b3ee74229f3c85e99f74bf9000cb5aedbc1760 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-11-20session tcp: support pacer idle timeoutsFlorin Coras1-2/+6
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-20session tcp: add opaque data to show cliFlorin Coras1-0/+2
Type: feature Change-Id: Iac8d4ed4997c4fce802589585e6a9424957152ca 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-05session tcp: refactor pacer timeFlorin Coras1-4/+2
Type: refactor Change-Id: Ic1c3e1f7987702cd88972acc34849dc1f585d5fe Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-10-30tcp: rx fifo size is u32Dave Wallace1-2/+18
- Limit cli input for rx fifo size to u32 Type: fix Signed-off-by: Dave Wallace <dwallacelf@gmail.com> Change-Id: If5a8e0668acf5b0f369acf4f120e47a012bd1899
2019-10-11tcp: refactor flags into cfg and conn flagsFlorin Coras1-8/+38
Type: refactor Change-Id: Ib5e2ecf55732599e1322736e3662178c9da49c7d Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-10-10tcp: retry lost retransmitsFlorin Coras1-7/+17
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: fix tso not work in single buffer issueSimon Zhang1-1/+1
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-01session: fix use-after-freeBenoît Ganne1-1/+1
Make sure to reinitialize data before free-ing it. Type: fix Change-Id: I45727c456d0345204d4825ecdd9690c5ebeb5e94 Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-09-25tcp: use sacks for timer based recoveryFlorin Coras1-21/+24
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-25session: fix cleanup in closing statesFlorin Coras1-0/+2
Type: fix Change-Id: Iccc283bb98d3bb459a711ec2b74d6a32ad12903b Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-09-23tcp: fix unformat cwnd multiplierFlorin Coras1-16/+18
Type: fix Change-Id: Ife4e650cb8b16f84ca6f77ba7b1d17a0f452fc3f Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-09-11tcp: handle sack renegingFlorin Coras1-3/+5
Type: feature Change-Id: I201155b1b92cf7e57310af726879dab039090582 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-09-10tcp: enable gso in tcp hoststackSimon Zhang1-0/+16
Type: feature Change-Id: If68d07fbe8c6f7fffd2f93c7e854367082927e4f Signed-off-by: Simon Zhang <yuwei1.zhang@intel.com>
2019-09-04session: improve cliFlorin Coras1-0/+2
Type: feature Allow session cli filtering based on thread index, transport protocol, session state and range of session pool indices. For instance show session thread 1 proto tcp state ready range 0 20 verbose Shows the session ids for the first 20 tcp sessions in thread 1 that are in ready state. To avoid excessive output that could reasult in the worker barrier being held by the main thread for long periods of time, the session cli will only output: - session ids (verbose == 1) for a maximum of 50 sessions / worker - verbose > 1 details for a maximum of 10 sessions Change-Id: I2cfb351b548e2e0a1d5b4345810be613e2917d17 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-09-03tcp: 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>
2019-08-31tcp: fix rx min/max fifo size parsingFlorin Coras1-13/+14
Type: fix Change-Id: Iff4a13da654dbdf7f08bb6d0743b466a1e6be01b Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-08-30tcp: improve mss computationFlorin Coras1-1/+43
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-13/+7
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-19session: add explicit reset apiFlorin Coras1-0/+13
Type: feature This can be used to forcefully close a session. It's only available to builtin applications for now. Transports must support the reset api otherwise normal close is used. Change-Id: I5e6d681cbc4c8045385e293e0e9d86fa2bf45849 Signed-off-by: Florin Coras <fcoras@cisco.com>