summaryrefslogtreecommitdiffstats
path: root/src/vnet/tcp/tcp_input.c
AgeCommit message (Collapse)AuthorFilesLines
2019-08-21tcp: add option for always on event loggingFlorin Coras1-33/+31
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-19tcp: set cc_algo on connection allocFlorin Coras1-5/+2
Type: feature Change-Id: Ie00329b11e26cab5db64b9c006171d283854c8ef Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-08-14tcp: extend protocol configurationFlorin Coras1-15/+18
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-12tcp: handle fin+rst+syn in closing stateFlorin Coras1-0/+2
Type: fix Change-Id: I32d4d4a5de04e89087f4ab4a5c425eda572932a8 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-08-08tcp: cleanup timersFlorin Coras1-3/+0
Type:refactor Change-Id: I37dbc8b55827d66c2578d6ab8b86ed7e18198aa6 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-08-02tcp: add more connection statsFlorin Coras1-0/+14
Type:feature Change-Id: If02884d0f1f26bfe31ec609ea9611cb27b699868 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-07-26session tcp: handle rxt and acks as custom eventsFlorin Coras1-92/+17
Type: feature Control ack generation and retransmissions with session layer scheduler. Change-Id: Iacdf9f84ab81f44851980aa45a83e75f29be2b7b Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-07-23tcp: generate closed notifications whenever tcp closesFlorin Coras1-0/+2
Type: fix This gives the session layer a chance to to cleanup events. Change-Id: I7499e94acf06340e2b19a1d91a4c61a63cd66c52 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-07-17tcp: add node with no 6-tuple lookupVladimir Kropylev1-22/+96
Type: feature Add new node in TCP stack where TCP 6 tuple lookup is not required. In new node, packet metadata contains connection-index which can be used to retrieve the TCP connection. The new node will be used by proxy. Change-Id: I3aa0268946898912f4176d5c8c5903e06657479d Signed-off-by: Vladimir Kropylev <vladimir.kropylev@enea.com>
2019-07-15session: allow transports to generate closed notificationsFlorin Coras1-0/+2
In contrast to the closing notification, whereby a transport informs the session layer that is beginning the closing procedure, this allows transports to notify the session layer of the fact that the transport is "fully" closed, i.e., it expects no more data. Also: - adds app closed state for sessions - changes tcp to have it notify when an active close has finished Type: feature Change-Id: I13c738006c03f85015e05ab82843a33a69382aaf Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-07-09tcp: track last lost bytes in sack sbFlorin Coras1-3/+9
Type:feature Change-Id: I687809ebcc759cec8cb1d5c3b2b7e6bc995a7985 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-07-05tcp: timestamp adjustmentVladimir Kropylev1-1/+1
Type: feature Change-Id: Icb3c574100cde95ab5be4923c8739889cf7e48c6 Signed-off-by: Vladimir Kropylev <vladimir.kropylev@enea.com>
2019-07-05tcp: add cc algo undo recovery notificationFlorin Coras1-18/+9
Type:feature Change-Id: Iedefe87555f0a0033abed8569bc2995c8f523d7e Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-07-05tcp: add loss signal to cc algoFlorin Coras1-5/+16
Type:feature Change-Id: Ibe1a4c555b55fb929d55b02599aaf099ed522cdf Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-06-28tcp: reject out-of-order finsFlorin Coras1-0/+4
Type:fix Change-Id: Iab2c308739f7733dbf70953e0ea87dcc404c60da Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-06-28tcp: fix close-waiting check for outstanding tx dataFlorin Coras1-1/+2
Type: fix Change-Id: I9e0e1bb933c38b17ac9fb8bf11b81e2fed021bf8 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-06-25tcp: delivery rate estimatorFlorin Coras1-12/+17
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-17session: use listener_handle instead of listener_indexNathan Skrzypczak1-1/+1
Type: refactor Change-Id: I97fa59a0ba0b6b7a98698926020ffffcf6ae6ba3 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-06-13tcp: fix tcp_do_fastretransmits failure.Guoao Sun1-0/+2
Type: fix vpp would fail 'tcp_in_fastrecovery (tc)' if tcp_connection_get returns 0. Change-Id: I512cba5234b3777f1737bec9451940e7e7975f15 Signed-off-by: Guoao Sun <guoao.sun@intel.com>
2019-06-12tcp: better estimate snd space for rxt with no sacksFlorin Coras1-2/+0
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: send challenge ack for in wnd synFlorin Coras1-1/+2
Type: fix Per rfc793, in window syns for established connections should lead to connection resets. As a mitigation for blind reset attacks, rfc5961 requests that such syns be replied to with challange acks. Change-Id: I75e4972bbb515e48d9cf1bda32ea5d9891d670f0 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-06-07tcp: log connect notify errorsFlorin Coras1-1/+2
Type: fix Change-Id: Idf0b2e16b2e7d126940bb38c7983d6784b5bfdc8 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-05-27tcp: handle disconnects in rcv-processFlorin Coras1-0/+1
Change-Id: I005f96480e81f3e750c18261e78d0e401da7528e Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-04-16svm_fifo rework to avoid contention on cursizeSirshak Das1-1/+1
Problems Addressed: - Contention of cursize by producer and consumer. - Reduce the no of modulo operations. Changes: - Synchronization between producer and consumer changed from cursize to head and tail indexes Implications: reduces the usable size of fifo by 1. - Using weaker memory ordering C++11 atomics to access head and tail based on producer and consumer role. - Head and tail indexes are unsigned 32 bit integers. Additions and subtraction on them are implicit 32 bit Modulo operation. - Adding weaker memory ordering variants of max_enq, max_deq, is_empty and is_full Using them appropriately in all places. Perfomance improvement (iperf3 via Hoststack): iperf3 Server: Marvell ThunderX2(AArch64) - iperf3 Client: Skylake(x86) ~6%(256 rxd/txd) - ~11%(2048 rxd/txd) Change-Id: I1d484e000e437430fdd5a819657d1c6b62443018 Signed-off-by: Sirshak Das <sirshak.das@arm.com> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
2019-04-05tcp: do not delete session on establish popFlorin Coras1-1/+1
Also: - force reset if wait close pops in fin-wait-1 with unsent data - adds more event logging. Change-Id: I4ddada046214fa71e17514cdec57b3026f84a283 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-04-04tcp: properly validate acks between snd_nxt and una_maxFlorin Coras1-2/+4
Change-Id: I37af3cb5fe3fe8556acbf8350f88663dca9ca8a9 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-04-04tcp: shorten wait in fin-wait-1 with fin rcvdFlorin Coras1-4/+11
Change-Id: Ifddc32ab3da0e691ac3df74ff26e19f6fa00fef7 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-04-02tcp: improve rcv process ack processingFlorin Coras1-67/+69
- 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-2/+2
Change-Id: If6c672d1caa8884eb5d819311606a79a3de81200 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-03-22tcp: improve handling of snd_nxtFlorin Coras1-63/+49
- 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-14tcp: drop anything but fins in TIME_WAITFlorin Coras1-0/+4
Change-Id: I8414c2ed8bda59504330aad5f1a80dfe08dd85de Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-03-13tcp: fix entering closing state while in fast recoveryFlorin Coras1-5/+15
Change-Id: I30470e8a1404632b0350056769338dc69a94c105 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-03-08tcp: fix window probes in fin-wait-1Florin Coras1-1/+1
Change-Id: Idf060f385f4d9b2f42fdab6a1d372727beb8b19e Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-03-06tcp: migrate old MULTIARCH macros to VLIB_NODE_FNFilip Tehlar1-75/+47
Change-Id: Ifd9fa30eed343e2c5d40582b3e3aa589b070637d Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
2019-03-02session: cleanup/rename functionsFlorin Coras1-13/+14
- remove unused functions - rename old "stream" functions Change-Id: Icbb03daa9f9f1c58b5be5c38aa8a9cbcf9159b47 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-03-01tcp: allow future acks if in windowFlorin Coras1-4/+9
Change-Id: I84ad1830b8db43f6031cf2876cd94f6a71216b83 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-02-22tcp: keep snd sack block free listFlorin Coras1-2/+3
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-21tcp: drop outstanding data when entering closing stateFlorin Coras1-5/+13
Change-Id: I92a009b9630b0d882ea3c5c99aad88ed6f5109a0 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-02-18session: move fifo allocation logic to app workerFlorin Coras1-1/+1
Change-Id: I1662ec4b5503cb64a8a86a2441842311d959b3a6 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-02-18tcp: harden for high scale scenariosFlorin Coras1-12/+32
- 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>
2019-02-18tcp: fix handling of retransmitted synsFlorin Coras1-15/+24
Change-Id: I88fdeb0ca56d3a5d9c0f36def13c6de8142f59f0 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-02-09session: refactor listen logicFlorin Coras1-1/+1
Make app-listener the handle for app listens. Consequently transport and local listen sessions are now associated to the app-listener. Change-Id: I9397a26d42cccb100970b6b4794c15bac2e11465 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-02-07tcp: fix fib_index for v6 ll packetsFlorin Coras1-0/+7
Change-Id: Ie69bdb9860d61f2c599c0c80b0ea80dfdfe178bd Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-02-07tcp: fix reset sending in syn-sentFlorin Coras1-3/+3
Change-Id: I468b1015bca5f95b162fb49e904aa4e4d38db75e Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-02-04session: cleanup part 1Florin Coras1-5/+5
Rename core data structures. This will break compatibility for out of tree builtin apps. - stream_session_t to session_t - server_rx/tx_fifo to rx/tx_fifo - stream_session.h to session_types.h - update copyright Change-Id: I414097c6e28bcbea866fbf13b8773c7db3f49325 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-01-18tcp: allow data in passive open ack (VPP-1545)Florin Coras1-2/+3
Change-Id: Iceb99d3f8b7029bd1b1e9ebafb1e0b3790c573e4 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-01-12session: generate wrong thread errors instead of crashingFlorin Coras1-5/+5
Change-Id: I7e59ae718d2722c49d42b22a0874e1645a191e89 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-01-03tcp: add more closing state arcsFlorin Coras1-0/+19
Change-Id: If6f4d6404753b2d6b96e17f5414079bcdb9edde8 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-01-01vcl/ldp: add write msg function and fine tuningFlorin Coras1-1/+2
Allows app to push data. Additionally, ensure reset/close replies are not sent unless vcl closes the session. Change-Id: Icbbf933cf57b55cfbcc7b802af0f83919a066f65 Signed-off-by: Florin Coras <fcoras@cisco.com>
2018-12-28session: free session after transport and app confirmFlorin Coras1-1/+1
In addition to that, a bit of refactoring. Change-Id: Iea1eabc2167bcdef185ec53bc09bae087c5398e6 Signed-off-by: Florin Coras <fcoras@cisco.com>