aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/quic/quic.c
AgeCommit message (Collapse)AuthorFilesLines
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 Skrzypczak1-7/+9
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 statisticsMathiasRaoul1-0/+61
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-04quic: fix stream tx_fifo race conditionNathan Skrzypczak1-27/+48
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 Skrzypczak1-8/+10
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 Skrzypczak1-154/+113
Type: refactor Change-Id: I5ec7079d34826edd7a3048ae1d44037386f5d3ff Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-11-22quic: Refactor quic rx callback for offloadNathan Skrzypczak1-111/+127
Type: refactor Change-Id: I1d90c8807e7eea4a77403bafc0628ec0d393c572 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-11-22quic: Remove qctx opening poolNathan Skrzypczak1-33/+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 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