aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/quic/quic.c
AgeCommit message (Collapse)AuthorFilesLines
2024-10-25session: support of multiple extended configsMatus Fabian1-4/+8
This allow configuration for each transport protocol when combined, e.g. HTTPS=HTTP+TLS. Extended config of session endpoint config is now chunk of memory, which allow seamless integration with VCL, and internal representation is hidden behind APIs, which is better for future improvements. By default chunk is allocated to 512B if the app doesn't do so before. Type: improvement Change-Id: I323f19ec255eba31c58c06b8b83af45aab7f5bb1 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-06-10quic: initialize ooo lookup on fifosFlorin Coras1-0/+10
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I6a0493834c5b60bdb42865112c453157fdfeb87c
2024-03-12misc: remove GNU Indent directivesDamjan Marion1-14/+0
Type: refactor Change-Id: I5235bf3e9aff58af6ba2c14e8c6529c4fc9ec86c Signed-off-by: Damjan Marion <damarion@cisco.com>
2023-12-22quic: seed random generator during initFilip Tehlar1-0/+8
Quic does not seed random value, so if the plugin is loaded separately RAND_bytes will fail. Type: fix Change-Id: If600cbde1fef30afb6316fc1a355261b008c3191 Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
2023-09-13quic: fix quic sessions state updatesFlorin Coras1-11/+5
Session state cannot be updated after async notification event is generated for app. Instead, make sure quic sessions that accept new streams are switched to listening state only on accept. Type: fix Fixes: 0242d30 Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I9663ccadbea99d555ad49e871f7dff897239dc84
2023-09-04session: fix allocation of proxy fifosFlorin Coras1-0/+1
Fifos need to be synchronously allocated once a transport like tcp accepts a session. Since events are now delivered asynchronously, proxy apps must explicitly register a cb function that manages fifo allocation prior to being notified of connect event. Type: fix Fixes: 0242d30 Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I7df973b7014e53e0766ea2bdc61e9871160bc18b
2023-08-09session: async rx event notificationsFlorin Coras1-5/+2
Move from synchronous flushing of io and ctrl events from transports to applications to an async model via a new session_input input node that runs in interrupt mode. Events are coalesced per application worker. On the one hand, this helps by minimizing message queue locking churn. And on the other, it opens the possibility for further optimizations of event message generation, obviates need for rx rescheduling rpcs and is a first step towards a fully async data/io rx path. Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Id6bebcb65fc9feef8aa02ddf1af6d9ba6f6745ce
2023-08-02quic: fix closing of streamsFlorin Coras1-3/+1
Avoid explicit manipulation of session state and generate closing event if need be. Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I07cda1db08a2673b27b496ea1371b0dfd8e6f98a
2023-03-08quic: use tx instead of builtin_tx event with timersFlorin Coras1-3/+2
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ic11069c912a5e59bb3ea0e0c6de6cfcc879c5f4e
2022-12-21quic: fix quic plugin with openssl 3.xDave Wallace1-0/+1
- load openssl legacy providers during quic init when building with openssl 3.0 or greater - re-enable quic 'make test' testcases on ubuntu-22.04 Type: fix Change-Id: Icfd429b6bc1bddf9f9937baa44cc47cd535ac5f2 Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
2022-12-14vcl: enable gso for 'sendmsg' in LDP mode.Dou Chao1-0/+1
Some upon apps(e.g. Nginx-quic) package it's several protocol buffers into a struct msg which is a combination of gso_buffer and gso_size. but if HostStack regardless the gso_size to the buffer and split the buffer with default mss, that cause peer client failed on parsing the package. Type: improvement Signed-off-by: Dou Chao <chao.dou@intel.com> Change-Id: I805eb642be826038ba96d1b85dad8ec0c0f6c459 Signed-off-by: Dou Chao <chao.dou@intel.com>
2022-10-31quic: use safe pool reallocFlorin Coras1-1/+2
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ia03c3fe0ca669b319dec8decd503254d0a95e58b
2022-10-12misc: fix issues reported by clang-15Damjan Marion1-2/+0
Type: improvement Change-Id: I3fbbda0378b72843ecd39a7e8592dedc9757793a Signed-off-by: Damjan Marion <dmarion@me.com>
2022-07-12quic: fix coverity warningFlorin Coras1-1/+2
Type: fix Fixes: 5b4b4c0 Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: If4bd8f30cd23d862109cab665251ad89804b1734
2022-06-17quic:fix crash rx_fifo full or growfanxb1-0/+16
if when the rx_fifo grows, svm_fifo_enqueue() return -4, stream_data->app_rx_data_len += rlen type conversion occurs, Finally,stream->recvstate.data_off calculation is wrong. Type:fix Signed-off-by: fanxb <fxb_mail@163.com> Change-Id: Iae11f0c453f32d836f4148d70e3b121545a53a90
2022-02-15quic: fix quic_config_fn cfg cmd parse errorfanxb1-3/+3
Type:fix Signed-off-by: fanxb <fxb_mail@163.com> Change-Id: I244f6ddd0a34e82ababd375646d3bb194602b5d5
2022-02-10session: use transport endpoint cfg for listenFlorin Coras1-1/+2
Makes it similar to connects. Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I38c328670054e1a9ba4dc4ea8fe7519a5a09e8be
2021-08-03quic: do not update crypto keys from workersAloys Augustin1-2/+7
The vnet_crypto_key_add should only be called from the main thread. This patch works around this limitation by allocating one key per worker and updating it on the fly everytime we need to do a crypto operation. This solution is far from ideal, but quicly has a strong assumption that it can use a key immediately after determining it, so making the key creation asynchronous is not a possibility. Signed-off-by: Aloys Augustin <aloaugus@cisco.com> Change-Id: I19fc5814195156003c36a73bb616738ba9d828f7 Type: fix
2021-06-18session: udp accept session state should be updated by appjxm1-0/+1
Type: fix Signed-off-by: jxm <jiangxiaoming@outlook.com> Change-Id: I6fb2620e7076e1e38a2ab85a70febe614b079e67
2021-05-21quic: add extended vcl testFlorin Coras1-1/+1
Only works with release binaries. Type: test Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Iede88713e1dbc4d1c6ae62651ff9150f88953f4d
2021-05-21quic: fix timer updateFlorin Coras1-1/+3
Use ctx timer wheel not current thread since connects are done on main but the ctx is allocated on first worker. Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ibed371bed12970d0d1ae4572f36df0bb1fb70b0f
2021-05-21quic: init crypto context on streamsFlorin Coras1-3/+2
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I901980f1f8ae8eb51c3972537ccac80f620868d0
2021-05-19quic: fix memory leak & crash on connection deleteDave Wallace1-2/+8
- quicly conn struct leaked on connection delete - Occasionally connection delete is called twice before connection is closed which caused a crash. Type: fix Change-Id: Ifaaaeda55f71d58c97fa4d6652bda60a3efd4b69 Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
2021-05-11quic: alloc ctx on udp threadFlorin Coras1-9/+10
UDP sessions are allocated on first worker because main does not poll. Consequently, quic should also allocate connection on first, to avoid multiple migration events. Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ice229a42c399e87150e0f6dd76e2e06ab271556c
2021-05-07session: connects seg manager is always firstFlorin Coras1-3/+0
By convention, connects segment manager will be first. Therefore it will be the one with the first segment wherein lies the app's message queue. Saves us the trouble of allocating it on first connect, if app started by listening, and we no longer need to track if it's assignable to a listener or if it can be removed. Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Iba9a8ffaab618eeb41ec2144dcfee62d006dc7a2
2021-05-03quic: fix coverity warningFlorin Coras1-2/+2
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I277f2e9ae2b763f5833778406d11218211163e43
2021-05-03quic: improve udp dgram writeFlorin Coras1-10/+7
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I2992c66d11fe6adc96b525b0fde533e5ff58d7e4
2021-04-30quic: report number of packets sent on custom txFlorin Coras1-14/+8
A transport's custom_tx function must report the number of segments that it enqueued. Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ie088c4215e6f17df639159820b8adf46b96fbb46
2021-04-23tls quic: improve error reportingFlorin Coras1-6/+6
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I92f0c1f7c0f4696fa12071440a643aa703d6306f
2021-04-22vcl session: refactor passing of crypto contextFlorin Coras1-6/+17
Pass tls/quic crypto context using extended config instead of bloating conect/listen messages. Type: refactor Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I0bc637ae310e6c31ef1e16847501dcb81453ee94
2021-03-26vlib: convert foreach_vlib_main macro to be more gdb and clang-format friendlyDamjan Marion1-12/+11
Type: improvement Change-Id: I1152e58d7bfcb3c4347147f87a834d45ad51cdfe Signed-off-by: Damjan Marion <damarion@cisco.com>
2021-02-15quic: Coverity fixNathan Skrzypczak1-1/+1
Type: fix Change-Id: I744cedb9c1b57945af5e83057e4759964fd2e104 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2021-01-22quic: quicly v0.1.2 updateMathias Raoul1-85/+139
- update quic plugin with new quicly/picotls API - remove packet allocator - remove crypto batching - update picotls plugin - add cli for quicly congestion control configuration Type: feature Change-Id: If76ef31c43b430eea2f7674539b2112aee0f351e Signed-off-by: Mathias Raoul <mathias.raoul@gmail.com>
2020-12-14misc: move to new pool_foreach macrosDamjan Marion1-10/+10
Type: refactor Change-Id: Ie67dc579e88132ddb1ee4a34cb69f96920101772 Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-09-28quic: Fix protip #47 / unformat (input_line)Nathan Skrzypczak1-19/+41
Type: fix Change-Id: Id03f50c46d28c850865cc76692424d063a0c2cfb Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2020-09-24session tcp udp tls quic: improve cli formattingFlorin Coras1-1/+2
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Iae5dbb8aaaf82d8e95c2ee8bbbe6844c9dd49f80
2020-04-10quic: fix clean stream closeAloys Augustin1-9/+25
Properly close the stream sending side instead of resetting the entire stream. Change-Id: I2daca7e507daa7bf9cd6a27fa8828a9ea7d175f9 Type: fix Signed-off-by: Aloys Augustin <aloaugus@cisco.com>
2020-04-04session tls: support tls deschedulingFlorin Coras1-1/+1
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ieb8bb9c6deb92479fdd3e045778fe5ae4782d1ea
2020-04-03session: improve error reportingFlorin Coras1-9/+11
Type: improvement Change-Id: I9dd850a1ce85b0adb5136233f176117e0ee38817 Signed-off-by: Florin Coras <fcoras@cisco.com>
2020-04-03session udp: fix transport flags and migrationFlorin Coras1-4/+4
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I840d43e79b1f826380bd56485441510e45bdfc7f
2020-04-01session udp: support connect on listenersFlorin Coras1-1/+1
Type: feature Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I6aaaec20a2b6d4c6ddfbe659d9402acc1be2f7e2
2020-03-30session udp: flag for connected udpFlorin Coras1-2/+4
Type: improvement This can be used as alternative to udpc Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ic3f7efe6728b25d4a8a0b61ddb36de66b4672c4f
2020-03-27quic: Check quicly version tag at compile timeMathiasRaoul1-11/+7
- updates the quicly version to 0.1.0-vpp - adds workaround for quicly_send()/assert_consistency() failure Type: feature Change-Id: I4c7e0ffc720ad9a685b89046a83646d59febd6cd Signed-off-by: MathiasRaoul <mathias.raoul@gmail.com> Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com> Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
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-24quic: disable vnet_crypto and batching if no crypto engines are loadedMathiasRaoul1-2/+12
Type: fix Change-Id: I95d3f8431b468cefc8777526dd3b988a299f0687 Signed-off-by: MathiasRaoul <mathias.raoul@gmail.com>
2020-02-25svm: refactor fifoFlorin Coras1-17/+2
Type: refactor Switch from a wrapped byte space to a "continuous" one wherein fifo chunks are appended to the fifo as more data is enqueued and chunks are removed as data is dequeued. The fifo is still subject to a maximum size, i.e., maximum number of bytes that can be enqueued, so the max number of chunks associated to the fifo is also constrained. When enqueueing data, which must fit within the available free space, if not enough "supporting" chunk memory is available, the fifo asks the fifo segment for enough chunk memory to ensure that the write can succeed. To avoid allocating large amounts of small chunks due to small writes, if possible, the size of the chunks requested is lower capped by min_alloc. When dequeuing data, all the chunks that have been completely drained, i.e., head moved beyond the chunks’ end bytes, are unlinked from the fifo and returned to the fifo segment. The one exception to this is the last chunk which is never unlinked. Change-Id: I98c1dbd9135fb79650365c7e40c29238b96cd4ee Signed-off-by: Florin Coras <fcoras@cisco.com>
2020-01-31quic: quicly crypto offloadingMathiasRaoul1-6/+91
- Implement our own quic packet allocator to allocate more memory at the end of the packet to store crypto offloading related data - 1RTT packets offloading encryption/decryption using vnet crypto - Add cli to change max packet per key Type: feature Change-Id: I7557fd457d7ba492329d5d8ed192509cbd727f9c Signed-off-by: MathiasRaoul <mathias.raoul@gmail.com>
2020-01-31quic: update quicly to v0.0.10-vppMathiasRaoul1-1/+1
Type: feature Signed-off-by: MathiasRaoul <mathias.raoul@gmail.com> Change-Id: I5452f8bbd0ff9e2a57f7bd7d134a8824efa5f30a
2020-01-06quic: call quic_send_packets only once per ctxAloys Augustin1-3/+7
This prevents unnecessary calls to quic_send_packets. Type: fix Change-Id: I7abe509aa8b7b9d5a01c9876046cf0f4507a79cf Signed-off-by: Aloys Augustin <aloaugus@cisco.com>
2020-01-02session: fix listener global endpoint lookupFlorin Coras1-1/+1
Type: fix Ensure listeners for app transport protocols are added to lookup tables using their session endpoints instead of their transport connections, which can override the network connection id in the transport connection. Change-Id: I56fa3666bb1422c0799fc7143cd099751ff6e2e6 Signed-off-by: Florin Coras <fcoras@cisco.com>