summaryrefslogtreecommitdiffstats
path: root/src/plugins/quic
AgeCommit message (Collapse)AuthorFilesLines
2020-03-24quic: disable vnet_crypto and batching if no crypto engines are loadedMathiasRaoul3-11/+33
Type: fix Change-Id: I95d3f8431b468cefc8777526dd3b988a299f0687 Signed-off-by: MathiasRaoul <mathias.raoul@gmail.com>
2020-03-05session: API cleanupJakub Grajciar1-2/+2
Use consistent API types. Type: fix Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com> Change-Id: Ib752a3425c076eb53bc5255a48039cbb74b1fcce Signed-off-by: Jakub Grajciar <jgrajcia@cisco.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-02-07tests: skip extended quic tests under developmentDave Wallace1-4/+21
Type: test Signed-off-by: Dave Wallace <dwallacelf@gmail.com> Change-Id: I05c464311e98d149f7bc06aa801fd8aefda1959e Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
2020-02-07quic: update config values for large stream testsDave Wallace1-84/+88
- Update vpp and vpp_echo parameters to enable large data stream tests to pass. - Standardize stream size nomenclature. Type: fix Change-Id: I929ac9f43ecfccf2c3c3fe4d076761154512fac5 Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
2020-02-07quic: fix coverity warningMathiasRaoul1-2/+1
Type: fix Change-Id: I24aac10a2943151d5b2fe96a0dff1c5beb7340b9 Signed-off-by: MathiasRaoul <mathias.raoul@gmail.com>
2020-02-06quic: fix coverity warningMathiasRaoul1-2/+2
Type: fix Change-Id: I7299b3b0a6d32c1cbe213dc1aadb8260cdec8062 Signed-off-by: MathiasRaoul <mathias.raoul@gmail.com>
2020-01-31quic: quicly crypto offloadingMathiasRaoul4-57/+579
- 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-15quic: add FEATURE.yamlAloys Augustin1-0/+10
Type: docs Change-Id: Ica60b42e64703879c5c229209e4a4fac278bda31 Signed-off-by: Aloys Augustin <aloaugus@cisco.com>
2020-01-14tests: fix worker thread initializationPaul Vinciguerra1-4/+7
from threading.thread __init__: This constructor should always be called with keyword arguments. If a subclass overrides the constructor, it must make sure to invoke the base class constructor (Thread.__init__()) before doing anything else to the thread. Type: test Change-Id: Ifa89202e97053a4baf19e9a0ca0913430d5087a3 Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
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>
2019-12-19quic: fix accept failureNathan Skrzypczak1-23/+23
Type: fix Change-Id: Ic85cedae268a3abc452a2b1d4cc6672a464e2d2c Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-12-18quic: Hotfix crypto context on migrateNathan Skrzypczak1-0/+17
Type: fix quicly_connections have internal references to crypto contexts which need to be updated when we switch thread as the supporting pools are thread-based. This under the assumption that the new contexts will be exactly identical Change-Id: I38083e59657ff068e347d9e7b47abe91a1167b6c Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-12-17quic: Implement crypto contextsNathan Skrzypczak2-76/+241
Type: feature Make quic use the crypto contexts. This introduces a crypto context pool backed by a hashtable giving ctx indexes by connect params (ckpair, engine, rx & tx fifo sizes). Applications keep the initialization vector common. Change-Id: I22ed6711196cd70a2f2f74240f12113c7af8dfcd Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-12-17quic: update quicly to v0.0.8-vppMathiasRaoul2-6/+8
Type: feature Signed-off-by: MathiasRaoul <mathias.raoul@gmail.com> Change-Id: I7470d79d1e39716ff83ba2d2b320813d79e2554c
2019-12-11quic: Add support for unidirectional streamsNathan Skrzypczak1-5/+14
Type: feature Change-Id: I3a642626a444504594c5e3df40dbc92df54136f0 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-12-11quic: Use per thread next_cidNathan Skrzypczak2-8/+10
Type: fix Change-Id: Ia89427257b78f6f7ba62c9d1076bf0593ee2dca7 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-12-11quic: Add aggregated quicly statsNathan Skrzypczak1-67/+186
Type: feature Change-Id: Ice8de7030a0330cfe77a58657701f0703e0695dd Signed-off-by: MathiasRaoul <mathias.raoul@gmail.com> Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-12-11quic: add more detailed statisticsMathiasRaoul2-0/+67
Type: feature Change-Id: I3df7b054ec08c7b307413d24468fc3df6a5aacc3 Signed-off-by: MathiasRaoul <mathias.raoul@gmail.com>
2019-12-10quic: removing quicly_send call from quic_accept_connectionMathiasRaoul1-9/+21
Type: fix Signed-off-by: MathiasRaoul <mathias.raoul@gmail.com> Change-Id: I429b50b88c8e029b06854c7433d0bc77619e98a3
2019-12-06quic: update quicly to v0.0.7-vppMathiasRaoul1-8/+23
Type: feature Change-Id: Ieeb9abb59b4d094bbd7bfc04a9007d3cebd645d7 Signed-off-by: MathiasRaoul <mathias.raoul@gmail.com>
2019-12-05tests: quic enable per testcase timeout overridesPaul Vinciguerra1-3/+8
Type: test Change-Id: I4f8aee3efa53d58f96631fe2d2da5756304fb75a Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-12-04quic: fix stream tx_fifo race conditionNathan Skrzypczak2-27/+61
Type: fix There is a race condition in when receiving TX from a client application : As egress_emit writes as much data as possible to the stream, if during egress_emit the app writes to the fifo, the data will be directly passed to quicly. Then TX callback happens and triggers a scheduler update telling quilcy the stream has data to send. When the next egress_emit is called and no more data has come, we have nothing to write, we return len = 0 to quicly which breaks an assert if a loss happens later on. Change-Id: I47e00a14dfc9068b5dac7b5c090a89124aea004f Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-12-04quic: clean accept/connect error codepathNathan Skrzypczak1-48/+51
Type: fix First attempt to clean the leftover state when accept_notify / connect_notify fails due to mq size constraints. vpp should now be left in a state such that clean state will eventually be reached when timers fire. Change-Id: I9e1166dab2778bf05d5af42d437769651369cae0 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-12-04quic: refactor connection search fnNathan Skrzypczak1-27/+31
Type: refactor Change-Id: I55aace44773e4fab0470d27b14dd68544f7d99c5 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-12-04quic: add conn-timeout config optionNathan Skrzypczak2-8/+12
Type: feature Change-Id: Ia9cb57b9f7c2d14a137556d6918763f1cb11850d Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-12-04quic: fix import typoNathan Skrzypczak1-1/+1
Type: fix Change-Id: Iab96ebc1579b0be5b711f975163f9ac96648d2ad Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-11-26quic: Refactor for crypto contextsNathan Skrzypczak4-165/+168
Type: refactor Change-Id: I5ec7079d34826edd7a3048ae1d44037386f5d3ff Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-11-22quic: Refactor quic rx callback for offloadNathan Skrzypczak2-111/+147
Type: refactor Change-Id: I1d90c8807e7eea4a77403bafc0628ec0d393c572 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-11-22quic: Remove qctx opening poolNathan Skrzypczak2-34/+15
Type: fix We don't need the pool anymore as we store the ctx index in the underlying UDP session opaque Change-Id: Iec9be9c84a1f929d94b084176a143d304b0acb83 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-11-20quic: Increase loggingNathan Skrzypczak1-29/+40
Type: fix Change-Id: I689649ad163e76fecdabe96a8c2be5be3068ffde Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-11-19quic: handle duplicate packet from quiclyDave Wallace1-2/+15
Type: fix Signed-off-by: Dave Wallace <dwallacelf@gmail.com> Change-Id: Ia4b1eb3c704374e27b260d88ae6ab628754468d3
2019-11-07quic: Add support for ckpair & crypto engineNathan Skrzypczak2-20/+49
quic choice used ckpair is now the one passed to connect or listen via mq. The crypto engine is chosen with the value passed to connect or listen via mq: * If NONE(0) is provided, we default to quic_main. default_crypto_engine (picotls at init, can be changed via debug cli : quic set crypto api [crypto engine]) * If PICTOLS/VPP is provided, use this one * Other values return an error Type: feature Change-Id: Ifab893d6d03c83f202e6c7e7a9936f546a4b1530 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-11-06docs: add spellcheck to 'make docs' sphinx docsPaul Vinciguerra1-1/+1
The CI gate will fail if there are typos in the docs. writing output... [ 21%] events/Summits/OpensourceSummit... writing output... [ 22%] events/Summits/UKNO/2017_04_30_... featuresbyrelease/vpp16.06.rst:34:Rasberry:vpp16.06 writing output... [100%] usecases/vppinazure Spelling checker messages written to /vpp/docs/_build/html/output.txt Warning, treated as error: Found 1 misspelled words Makefile:31: recipe for target 'html' failed make[1]: *** [html] Error 2 make[1]: Leaving directory '/vpp/docs' If you introduce a term that is not recognized, please add it to custom dictionary at docs/spelling_wordlist.txt. Type: feature Change-Id: Id49be4fbee617f544f1ab8e78e7de8a4df36448b Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-11-06quic: free qctx after udp cleanupNathan Skrzypczak1-22/+58
Type: fix As udp_session.opaque is qctx index, qctx free needs to happen after session cleanup. This patch also introduces * assert timer stop on ctx free * debug cli for listing quic ctx Change-Id: I3a58d226b094a0bbdf090b4f3eccbc2e11c6329b Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-11-05misc: Fix python scripts shebang lineRenato Botelho do Couto1-1/+1
Type: fix Since CentOS 8, RPM build script doesn't accept '#!/usr/bin/env python' as a valid shebang line. It requires scripts to explicitly chose between python2 or python3. Change all to use python3 as suggested by Paul Vinciguerra. Depends-On: https://gerrit.fd.io/r/23170 Signed-off-by: Renato Botelho do Couto <renato@netgate.com> Change-Id: Ie72af9f60fd0609e07f05b70f8d96e738b2754d1
2019-11-04quic: enhance error reportingDave Wallace2-6/+24
Type: refactor Signed-off-by: Dave Wallace <dwallacelf@gmail.com> Change-Id: I710d00e4a6c4356d0f00f7592bf14b55596ec6ae
2019-11-04quic: remove redundant function callsDave Wallace1-2/+0
- session_transport_delete_notify() is called before and inside quic_connection_delete() Type: fix Signed-off-by: Dave Wallace <dwallacelf@gmail.com> Change-Id: I5c79a3269e36c4aab5aa99fdfdac06c1334f0f6f
2019-11-01quic: fifo size is u32Dave Wallace3-18/+32
- Fix cli / config fifo size to only accept u32 size input. - Make cli / config fifo-size input type handling to be the same as vpp hoststack - Update external transfer tests to use new syntax with different fifo sizes for vpp_echo client/server and vpp. Type: fix Change-Id: Ia5ddb2b8d3d9908ab502352819eebeec8ac0971d Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
2019-10-31quic: fix wrong error checkingDave Wallace1-6/+1
- Revert error checking to previous ASSERT Type: fix Fixes: 7c7fa9066 Signed-off-by: Dave Wallace <dwallacelf@gmail.com> Change-Id: I6d915d88bf932c74f9b866aec3bd1531e0cb47f4
2019-10-31quic: disable failing testFlorin Coras1-0/+1
Type: fix Disable test until fixed. Change-Id: I1f03630d126e61578c63a3536a0dd1a7b4da2b92 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-10-30quic: fix quicly fifo size mismatchDave Wallace1-3/+13
- This fixes an intermittent failure of the test_quic_ext_transfer test due to quicly being configured with the wrong fifo size which was taken from the cli or startup.conf file. The fifo size from the application context is now used when creating the quicly context. - Emit an error message if the entire chunk of a stream is not enqueued in the svm fifo. Type: fix Change-Id: I03847ea7d4cd7a617b577697dfe3afa969850937 Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
2019-10-30quic: fix typosPaul Vinciguerra1-4/+4
Type: style Change-Id: Iec3478541997352a627c8869e38cb7be7c3dae6a Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-10-22tests: quic add big stream extended testsDave Wallace1-10/+65
Type: test Signed-off-by: Dave Wallace <dwallacelf@gmail.com> Change-Id: I6c5bdfd934a2c96c410c36c2bc090ee47b679bea
2019-10-22tests: enable vpp_echo to run in gdbDave Wallace1-7/+22
- Enable vpp_echo to be run in gdb when running 'make test DEBUG=gdb-all' Type: test Signed-off-by: Dave Wallace <dwallacelf@gmail.com> Change-Id: I79a69b0573c01900535078d7493d52b417350815
2019-10-21quic: Add PICOTLS_INCLUDE_DIR var to CMakeLists.Mathias Raoul1-0/+6
Type: fix Change-Id: I10ebcc653491d11ca798e0a60be6eeef82c41766 Signed-off-by: Mathias Raoul <mathias.raoul@gmail.com>
2019-10-11hsa: vpp_echo refactor quic nclients argDave Wallace1-2/+2
Type: refactor Signed-off-by: Dave Wallace <dwallacelf@gmail.com> Change-Id: If8471d98053ae44cae07cdca6d269aa3c7df9887
2019-10-09hsa: use crypto_engine_type_t for TLSNathan Skrzypczak1-1/+1
Type: refactor This patch does the following conversions TLS_ENGINE_X -> CRYPTO_ENGINE_X tls_engine_type_t -> crypto_engine_t It does not change numbering of engines Change-Id: I872dfaec3a6713bf4229c84d1ffd98b8b2419995 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>