summaryrefslogtreecommitdiffstats
path: root/src/plugins/quic/quic.c
AgeCommit message (Collapse)AuthorFilesLines
2019-11-07quic: Add support for ckpair & crypto engineNathan Skrzypczak1-19/+46
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-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-04quic: enhance error reportingDave Wallace1-6/+19
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 Wallace1-10/+27
- 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-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-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>
2019-10-09session: Add certificate storeNathan Skrzypczak1-9/+9
Type: feature This changes the behavior of both API calls APPLICATION_TLS_CERT_ADD & APPLICATION_TLS_KEY_ADD certificates and keys aren't bound to an app, they are passed to it via connect / listen using the message queue. This should be followed by a per protocol (QUIC/TLS) crypto_context store to save devrived structs Change-Id: I36873bc8b63b5c72776c69e8cd9febc9cae31882 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-10-08hsa: make vpp_echo use mq instead of bapiNathan Skrzypczak1-1/+1
Type: refactor Change-Id: I4f370b09e22dbbc8920272df9a042dae04825bfc Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-10-08session: add is_migrating flagNathan Skrzypczak1-49/+37
Type: fix Add SESSION_F_IS_MIGRATING flag for session. It is set by the session layer before poking the transport for migration. It's the transport responsibility to unset the flag & act apropriatly if RX happens on a migrating session. Change-Id: Ie722917f1cf9344d8f041cad4ed8b064fb5853b6 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-10-07quic: fix wrong condition in update_fifo_sizeMathiasRaoul1-1/+1
Type: fix Signed-off-by: MathiasRaoul <mathias.raoul@gmail.com> Change-Id: If371cde9412be29634164830c58634da248ad0ae
2019-10-07quic: Refactor naming & clibsNathan Skrzypczak1-277/+194
Type: refactor Change-Id: I067fc7dbcc0985277df01384d9dcdb0bdf62fba5 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-10-04quic: make quic fifo size configurable via cliMathiasRaoul1-5/+79
Type: feature Change-Id: I6d6ac649094ef4bee2aed311915dd58f11972e79 Signed-off-by: MathiasRaoul <mathias.raoul@gmail.com>
2019-10-04quic: update quicly to v0.0.5MathiasRaoul1-49/+12
-Update quicly patches -Remove event logger (removed from quicly). -Update quicly functions calls Type: feature Signed-off-by: MathiasRaoul <mathias.raoul@gmail.com> Change-Id: I0355befeb5ce961928f17225c83890ba87cf6ebc
2019-10-01quic: Create custom event loggerMathiasRaoul1-2/+39
Type: feature Change-Id: I20acfe6a53cf9f15e3e4b8847b6f76757962f1c7 Signed-off-by: MathiasRaoul <mathias.raoul@gmail.com>
2019-10-01quic: Add Tx, Rx and packet drop countersMathiasRaoul1-0/+34
Type: feature Change-Id: I25aeeed49fc569315296a73c5595c2e2e302434f Signed-off-by: MathiasRaoul <mathias.raoul@gmail.com>
2019-10-01quic: add cli command for statsMathiasRaoul1-0/+47
add command to display stats from quicly (rtt, packet loss) Type: feature Change-Id: Iaa18bc78fbf80a9367ef150a8cf4997a456c6b39 Signed-off-by: MathiasRaoul <mathias.raoul@gmail.com>
2019-09-18quic : refactor function namingMathiasRaoul1-1/+1
- functions renaming to be consistent with the other plugin functions name - removing useless logs Type: style Signed-off-by: MathiasRaoul <mathias.raoul@gmail.com> Change-Id: Iea212a799448975e01a92f16cc329de13907ff07 Signed-off-by: MathiasRaoul <mathias.raoul@gmail.com>
2019-09-12quic: fix use-after-freeBenoît Ganne1-1/+6
Type: fix Change-Id: I5e5e37684e336ca992dae8ea1d39b1fb103802b1 Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-09-11quic: fix non-null terminated hostname stringBenoît Ganne1-9/+5
Type: fix Change-Id: I089d359d5726050f32f69366547086216fdb3098 Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-09-06quic: fix server opening stream immediatelyAloys Augustin1-3/+18
Previously, if the first thing a server did was to open a stream and send data, this could trigger a crash on the clilent side VPP as the quic session wouldn't be allocated. Change-Id: I43990ce2a71217d6719ecae4da60111d05fbcfc0 Type: fix Signed-off-by: Aloys Augustin <aloaugus@cisco.com>
2019-09-02quic: disable quic plugin by defaultAloys Augustin1-0/+1
Change-Id: I8eb243e80ff043a23cb3efae186164dad6c11ca8 Type: fix Signed-off-by: Aloys Augustin <aloaugus@cisco.com>
2019-08-19quic: fix rx_callback refactoringNathan Skrzypczak1-1/+1
* check_quic_client_connected might allocate ctx and invalidate our pointer Type: fix Change-Id: I885ca5a1a6db9a7765c9047a7df9cdf66c94f1cb Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-08-16quic: quic_app_rx_callback refactor.Mathias Raoul1-117/+167
Add quic_process_one_rx_packet() function Type: refactor Change-Id: Iecaec3f7fed9f95a25ea55d0251626beb79181fd Signed-off-by: Mathias Raoul <mathias.raoul@gmail.com>
2019-08-09quic: handle session migration notificationsAloys Augustin1-63/+38
Rely on the migrate callback to move quic connections to follow the underlying udp connection placement. Change-Id: Ia1cf3a16187bbe48f5afb3d1f444427f288ff79c Type: fix Signed-off-by: Aloys Augustin <aloaugus@cisco.com>
2019-08-06quic: Add missing session_migrate_callbackNathan Skrzypczak1-0/+7
Change-Id: Ibbec53e07852f1b8987696fddbc3bf83f75705ce Type: fix Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-08-05quic: fix memset 0 picotls depends onNathan Skrzypczak1-0/+1
Type: fix Change-Id: Id03cc839662179f8543b0b3f540932e1d87f1cea Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-08-02quic: Improve quic echo connect threadingNathan Skrzypczak1-7/+8
Type: fix Change-Id: I64f90139ad70e722f1ecbc4e0c6c1e723ec0f054 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-08-02quic: fix connection move with multiple workersAloys Augustin1-13/+35
Change-Id: Ibd1012c2c1382de442ed294dd9e8a0ec89349fa1 Type: fix Signed-off-by: Aloys Augustin <aloaugus@cisco.com>
2019-08-01quic: Improve quicly_ctx handling & crypto ctxNathan Skrzypczak1-135/+131
Type: fix Change-Id: I898de67c017c3a45bed123d81041b32b43f749d0 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-07-30quic: fix cert loadingNathan Skrzypczak1-2/+9
Type: fix Change-Id: I29d24c8ec7b8e0613d4fbf5eedc72384326dc284 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-07-30quic: cleanup and refactorisationAloys Augustin1-503/+56
Change-Id: I031a60ac010b55110f32f0a08e19b1156aeda268 Type: refactor Signed-off-by: Aloys Augustin <aloaugus@cisco.com>
2019-07-26session tcp: handle rxt and acks as custom eventsFlorin Coras1-1/+1
Type: feature Control ack generation and retransmissions with session layer scheduler. Change-Id: Iacdf9f84ab81f44851980aa45a83e75f29be2b7b Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-07-23quic: Refactor connections closing and deletionAloys Augustin1-21/+78
This code should handle the 3 following cases: - Active close quic_proto_on_close sets state to ACTIVE_CLOSING send packets eventually returns an error, calling quic_connection_closed which deletes the connection - Passive close quic_on_closed_by_peer -> set state to PASSIVE_CLOSING "race" between app confirmation (calling quic_proto_on_close) and quicly signalling that it's done (triggers call to quic_connection_closed). If quic_connection_closed is called first, it sets the state to PASSIVE CLOSING QUIC CLOSED, then when quic_proto_on_close is called it frees the connection. If quic_proto_on_close is called first, it sets the state to PASSIVE CLOSING APP CLOSED, then when quic_connection_closed is called it frees the connection - Error close (reset) quic_connection_closed is called in state READY. This means a timeout or protocol error happened. This calls session_transport_reset_notify, the app should confirm the deletion and quic_proto_on_close will be called to delete the connection. Change-Id: I3acbf9b079ed2439bdbb447197c428c78915d8c0 Signed-off-by: Aloys Augustin <aloaugus@cisco.com> Type: feature
2019-07-22quic: update quicly libraryAloys Augustin1-4/+4
Update quicly to latest version that includes our upstreamed patch. Change-Id: I0b26c72e49bce81daf4fb069b5818defd6cf25b9 Type: feature Signed-off-by: Aloys Augustin <aloaugus@cisco.com>
2019-07-19session: Use parent_handle instead of transport_optsNathan Skrzypczak1-11/+13
Type: feature This is mostly used for quic in the case of a stream creation (i.e. connect on an already established QUIC session). We want do default parent_handle to INVALID to be able to distinguish it from parent_handle = 0 Change-Id: Id5ac0b0155a3c44e51334231b711e4fd87a96a10 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-07-17quic: Add back stream connect conditionNathan Skrzypczak1-1/+1
Type: fix This is needed for VCL patch in the case the Qsession handle we connect to is 0. A better way to do this would be to add a u16 header to the transport_opts, as session_handles are : <u16 unused><u16 thread_id><u32 session_index> But this requires modifying all clients. Change-Id: If171bcf982eba3bd705b586c9fd4a6c2ad0e114b Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-07-15quic: integrate vpp crypto api for quic packets encryptionMathias Raoul1-0/+35
Type: feature Change-Id: I740f15a5ef959d31e94e59d652aa9f691db1f289 Signed-off-by: Mathias Raoul <mathias.raoul@gmail.com>
2019-07-12quic: fix show session verboseAloys Augustin1-29/+23
Proprely display quic connections in show session verbose, and add a small fix for UDPC listeners and UDP sessions formatting. Change-Id: I33f83e77bf357347623d87ad23c483aba60a9bb2 Signed-off-by: Aloys Augustin <aloaugus@cisco.com> Type: feature
2019-07-12tls quic: reduce default segment sizesAloys Augustin1-2/+2
This reduces the memory required by tls and quic, allowing to run them (and their tests) in more constrained environments by default. Change-Id: I954081c725fb4f5f173db1f8e76922d957c5b0a2 Signed-off-by: Aloys Augustin <aloaugus@cisco.com> Type: fix
2019-07-12session: add thread index to all formattersAloys Augustin1-2/+4
Add a thread_index argument to half-open and listener session formatters because QUIC can have listeners and half-open sessions in any thread. Change-Id: I1de60e35ece4c68ba8cfdd6b63f211bc620d687b Signed-off-by: Aloys Augustin <aloaugus@cisco.com> Type: feature
2019-07-09quic: echo thread can handle multiple sessionsNathan Skrzypczak1-1/+11
Type: feature Change-Id: Ibb60d5b46aafe109a81a8604712a917f6e246eaf Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-07-09quic: fix passive disconnect handling & refactorNathan Skrzypczak1-508/+676
Type: refactor Change-Id: Ie54a77252e9f58a90f9e1f9595b9ede354952f70 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-07-03quic: fifo notifications fixAloys Augustin1-0/+5
Add SESSION_IO_EVT_RX handling in session_send_evt_to_thread to allow internal apps to send rx events ("tx notifications") to quic. Add a call to quic_send_packets in quic_custom_app_rx_callback to ensure QUIC ACKs are sent if there is no other activity on the connection. Type: fix Change-Id: I885e01e6475e5b0274f274e9dd34d4a771719e69 Signed-off-by: Aloys Augustin <aloaugus@cisco.com>
2019-06-29svm: rename fifo tx notifications to reflect useFlorin Coras1-7/+7
Type: refactor Change-Id: I651db44acdcb666a9c63e1037352cf88c68795b5 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-06-28quic : Use TX event for app read notificationNathan Skrzypczak1-56/+102
Type: feature Change-Id: I1846cdeb35f079249f66a0351aa244c540923a43 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-06-27session: Add transport vft protocol optionsNathan Skrzypczak1-2/+4
Type: refactor Change-Id: I4e0afc206e4871596c2ed8a6ca00914a379f1526 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-06-24quic: server create streams test caseDave Wallace1-1/+1
Type: test * Refactor quic_echo test app * Add timinig capabilities * Add multiple quic tests Change-Id: I3302c66539b12c1375d1a0c6d46f9ff4c6f2b27c Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
2019-06-20quic: remove session flags identifying Q/S sessionsNathan Skrzypczak1-8/+3
Type: refactor Change-Id: Id68c5ae6d57df0fc556bbf583a66e538e641ffb1 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>