diff options
author | Klement Sekera <ksekera@cisco.com> | 2020-04-05 10:22:47 +0200 |
---|---|---|
committer | Klement Sekera <ksekera@cisco.com> | 2020-04-08 11:07:49 +0200 |
commit | ba5f9bc7534bcf58225b0658993728b1f4d47a67 (patch) | |
tree | a3ca0cea8eea85910e050808c8df37bf802cd393 /src/plugins/nat/nat.h | |
parent | 248ce43c6d79b79597e28f19615e83d2bb0a9276 (diff) |
nat: ED: global session LRU list
Maintain a global session LRU allowing reuse of expired session instead
of relying on a scavenging mechanism to periodically walk sessions.
Whenever a new session is being allocated in slow path, also attempt to
free an expired session from global LRU list.
Type: improvement
Signed-off-by: Klement Sekera <ksekera@cisco.com>
Change-Id: I9edde9ec138de67c9a4888e915b0490ec16415fa
Diffstat (limited to 'src/plugins/nat/nat.h')
-rw-r--r-- | src/plugins/nat/nat.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/plugins/nat/nat.h b/src/plugins/nat/nat.h index 46dc040c574..d2b114afbbe 100644 --- a/src/plugins/nat/nat.h +++ b/src/plugins/nat/nat.h @@ -320,6 +320,10 @@ typedef CLIB_PACKED(struct u32 per_user_index; u32 per_user_list_head_index; + /* index in global LRU list */ + u32 global_lru_index; + f64 last_lru_update; + /* Last heard timer */ f64 last_heard; @@ -521,6 +525,10 @@ typedef struct /* Pool of doubly-linked list elements */ dlist_elt_t *list_pool; + /* LRU session list - head is stale, tail is fresh */ + dlist_elt_t *global_lru_pool; + u32 global_lru_head_index; + /* NAT thread index */ u32 snat_thread_index; |