From 2e4523816ca0e366a4f597a0e5fdb93fccc887a5 Mon Sep 17 00:00:00 2001 From: Mathias Raoul Date: Tue, 19 Jan 2021 14:02:34 +0000 Subject: quic: quicly v0.1.2 update - 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 --- src/plugins/quic/quic.h | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) (limited to 'src/plugins/quic/quic.h') diff --git a/src/plugins/quic/quic.h b/src/plugins/quic/quic.h index a576650a0c6..901bdbc39b2 100644 --- a/src/plugins/quic/quic.h +++ b/src/plugins/quic/quic.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 Cisco and/or its affiliates. + * Copyright (c) 2021 Cisco and/or its affiliates. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: @@ -47,8 +47,7 @@ #define QUIC_MAX_COALESCED_PACKET 4 -#define QUIC_SEND_MAX_BATCH_PACKETS 16 -#define QUIC_RCV_MAX_BATCH_PACKETS 16 +#define QUIC_RCV_MAX_PACKETS 16 #define QUIC_DEFAULT_CONN_TIMEOUT (30 * 1000) /* 30 seconds */ @@ -134,6 +133,12 @@ typedef enum quic_ctx_flags_ QUIC_F_IS_LISTENER = (1 << 1), } quic_ctx_flags_t; +typedef enum quic_cc_type +{ + QUIC_CC_RENO, + QUIC_CC_CUBIC, +} quic_cc_type_t; + /* This structure is used to implement the concept of VPP connection for QUIC. * We create one per connection and one per stream. */ typedef struct quic_ctx_ @@ -210,25 +215,6 @@ typedef struct quic_crypto_context_data_ ptls_context_t ptls_ctx; } quic_crypto_context_data_t; -typedef struct quic_encrypt_cb_ctx_ -{ - quicly_datagram_t *packet; - struct quic_finalize_send_packet_cb_ctx_ - { - size_t payload_from; - size_t first_byte_at; - ptls_cipher_context_t *hp; - } snd_ctx[QUIC_MAX_COALESCED_PACKET]; - size_t snd_ctx_count; -} quic_encrypt_cb_ctx; - -typedef struct quic_crypto_batch_ctx_ -{ - vnet_crypto_op_t aead_crypto_tx_packets_ops[QUIC_SEND_MAX_BATCH_PACKETS], - aead_crypto_rx_packets_ops[QUIC_RCV_MAX_BATCH_PACKETS]; - size_t nb_tx_packets, nb_rx_packets; -} quic_crypto_batch_ctx_t; - typedef struct quic_worker_ctx_ { CLIB_CACHE_LINE_ALIGN_MARK (cacheline0); @@ -237,7 +223,6 @@ typedef struct quic_worker_ctx_ quicly_cid_plaintext_t next_cid; crypto_context_t *crypto_ctx_pool; /**< per thread pool of crypto contexes */ clib_bihash_24_8_t crypto_context_hash; /**< per thread [params:crypto_ctx_index] hash */ - quic_crypto_batch_ctx_t crypto_context_batch; } quic_worker_ctx_t; typedef struct quic_rx_packet_ctx_ @@ -268,6 +253,7 @@ typedef struct quic_main_ uword *available_crypto_engines; /**< Bitmap for registered engines */ u8 default_crypto_engine; /**< Used if you do connect with CRYPTO_ENGINE_NONE (0) */ u64 max_packets_per_key; /**< number of packets that can be sent without a key update */ + u8 default_quic_cc; ptls_handshake_properties_t hs_properties; quic_session_cache_t session_cache; -- cgit 1.2.3-korg