modify session manager related configuration

This commit is contained in:
luwenpeng
2024-08-29 16:25:15 +08:00
parent 419d12760e
commit 338dcf93e5
31 changed files with 928 additions and 1093 deletions

View File

@@ -8,7 +8,7 @@ extern "C"
#include "tuple.h"
#include "stellar/session.h"
struct session_manager_options
struct session_manager_config
{
// max session number
uint64_t max_tcp_session_num;
@@ -19,33 +19,37 @@ struct session_manager_options
uint8_t udp_overload_evict_old_sess; // 1: evict old session, 0: bypass new session
// TCP timeout
uint64_t tcp_init_timeout; // range: [1, 60000] (ms)
uint64_t tcp_handshake_timeout; // range: [1, 60000] (ms)
uint64_t tcp_data_timeout; // range: [1, 15999999000] (ms)
uint64_t tcp_half_closed_timeout; // range: [1, 604800000] (ms)
uint64_t tcp_time_wait_timeout; // range: [1, 600000] (ms)
uint64_t tcp_discard_timeout; // range: [1, 15999999000] (ms)
uint64_t tcp_unverified_rst_timeout; // range: [1, 600000] (ms)
uint64_t tcp_init_timeout_ms; // range: [1, 60000] (ms)
uint64_t tcp_handshake_timeout_ms; // range: [1, 60000] (ms)
uint64_t tcp_data_timeout_ms; // range: [1, 15999999000] (ms)
uint64_t tcp_half_closed_timeout_ms; // range: [1, 604800000] (ms)
uint64_t tcp_time_wait_timeout_ms; // range: [1, 600000] (ms)
uint64_t tcp_discard_timeout_ms; // range: [1, 15999999000] (ms)
uint64_t tcp_unverified_rst_timeout_ms; // range: [1, 600000] (ms)
// UDP timeout
uint64_t udp_data_timeout; // range: [1, 15999999000] (ms)
uint64_t udp_discard_timeout; // range: [1, 15999999000] (ms)
uint64_t udp_data_timeout_ms; // range: [1, 15999999000] (ms)
uint64_t udp_discard_timeout_ms; // range: [1, 15999999000] (ms)
// limit
uint64_t session_expire_polling_interval_ms; // range: [0, 60000] (ms)
uint64_t session_expire_polling_limit; // range: [1, 1024]
// duplicate packet filter
uint8_t duplicated_packet_filter_enable;
uint32_t duplicated_packet_filter_capacity; // range: [1, 4294967295]
uint32_t duplicated_packet_filter_timeout; // range: [1, 60000] (ms)
double duplicated_packet_filter_error_rate; // range: [0.0, 1.0]
uint32_t duplicated_packet_filter_capacity; // range: [1, 4294967295]
uint32_t duplicated_packet_filter_timeout_ms; // range: [1, 60000] (ms)
double duplicated_packet_filter_error_rate; // range: [0.0, 1.0]
// evicted session filter
uint8_t evicted_session_filter_enable;
uint32_t evicted_session_filter_capacity; // range: [1, 4294967295]
uint32_t evicted_session_filter_timeout; // range: [1, 60000] (ms)
double evicted_session_filter_error_rate; // range: [0.0, 1.0]
uint32_t evicted_session_filter_capacity; // range: [1, 4294967295]
uint32_t evicted_session_filter_timeout_ms; // range: [1, 60000] (ms)
double evicted_session_filter_error_rate; // range: [0.0, 1.0]
// TCP reassembly
uint8_t tcp_reassembly_enable;
uint32_t tcp_reassembly_max_timeout; // range: [1, 60000] (ms)
uint32_t tcp_reassembly_max_segments; // range: [2, 512]
uint32_t tcp_reassembly_max_timeout_ms; // range: [1, 60000] (ms)
uint32_t tcp_reassembly_max_segments; // range: [2, 512]
};
struct __attribute__((aligned(64))) session_manager_stat
@@ -129,8 +133,12 @@ struct session_scan_opts
uint64_t last_pkt_time_ms[2];
};
struct session_manager_config *session_manager_config_new(const char *toml_file);
void session_manager_config_free(struct session_manager_config *cfg);
void session_manager_config_print(struct session_manager_config *cfg);
struct session_manager;
struct session_manager *session_manager_new(struct session_manager_options *opts, uint64_t now_ms);
struct session_manager *session_manager_new(const struct session_manager_config *cfg, uint64_t now_ms);
void session_manager_free(struct session_manager *mgr);
typedef uint64_t (*session_id_generate_fn)(uint64_t now_ms);
@@ -147,6 +155,7 @@ int session_manager_update_session(struct session_manager *mgr, struct session *
// return session need free by session_manager_free_session()
struct session *session_manager_get_expired_session(struct session_manager *mgr, uint64_t now_ms);
struct session *session_manager_get_evicted_session(struct session_manager *mgr);
uint64_t session_manager_clean_session(struct session_manager *mgr, uint64_t now_ms, struct session *cleaned_sess[], uint64_t array_size);
// return 0: have already timeout session
// return >0: next expire interval