From 6b6b5b22b9380aebcaa8ef4853ec70aa7d086b66 Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Fri, 25 Apr 2025 18:23:10 -0400 Subject: [PATCH] udp: track connection startup timestamp Type: improvement Change-Id: I8edea1beec82c8e2cfa87e0cc551609d46ee76a7 Signed-off-by: Florin Coras --- src/vnet/udp/udp.c | 2 ++ src/vnet/udp/udp.h | 1 + src/vnet/udp/udp_cli.c | 4 +++- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/vnet/udp/udp.c b/src/vnet/udp/udp.c index 2c2b744a49f..4ed5a68fa02 100644 --- a/src/vnet/udp/udp.c +++ b/src/vnet/udp/udp.c @@ -205,6 +205,7 @@ udp_session_bind (u32 session_index, transport_endpoint_cfg_t *lcl) clib_spinlock_init (&listener->rx_lock); if (!um->csum_offload) listener->cfg_flags |= UDP_CFG_F_NO_CSUM_OFFLOAD; + listener->start_ts = transport_time_now (listener->c_thread_index); udp_connection_register_port (listener->c_lcl_port, lcl->is_ip4); return listener->c_c_index; @@ -474,6 +475,7 @@ udp_open_connection (transport_endpoint_cfg_t * rmt) uc->cfg_flags |= UDP_CFG_F_NO_CSUM_OFFLOAD; uc->next_node_index = rmt->next_node_index; uc->next_node_opaque = rmt->next_node_opaque; + uc->start_ts = transport_time_now (thread_index); udp_connection_register_port (uc->c_lcl_port, rmt->is_ip4); diff --git a/src/vnet/udp/udp.h b/src/vnet/udp/udp.h index 57a0fe94d8c..6ff22009a4c 100644 --- a/src/vnet/udp/udp.h +++ b/src/vnet/udp/udp.h @@ -92,6 +92,7 @@ typedef struct u64 bytes_out; /**< bytes sent */ u64 dgrams_out; /**< rfc4113 dgrams sent */ u32 errors_in; /**< rfc4113 dgrams in errors */ + clib_time_type_t start_ts; /**< time stamp when connection was created */ } udp_connection_t; #define udp_csum_offload(uc) (!((uc)->cfg_flags & UDP_CFG_F_NO_CSUM_OFFLOAD)) diff --git a/src/vnet/udp/udp_cli.c b/src/vnet/udp/udp_cli.c index adae9934df6..c910b508933 100644 --- a/src/vnet/udp/udp_cli.c +++ b/src/vnet/udp/udp_cli.c @@ -18,6 +18,7 @@ #include #include #include +#include u8 * format_udp_connection_id (u8 * s, va_list * args) @@ -118,7 +119,8 @@ format_udp_vars (u8 * s, va_list * args) return s; } - s = format (s, " sw_if_index %d mss %u\n", uc->sw_if_index, uc->mss); + s = format (s, " sw_if_index %d mss %u duration %.3f\n", uc->sw_if_index, + uc->mss, transport_time_now (uc->c_thread_index) - uc->start_ts); s = format (s, " stats: %U\n", format_udp_stats, uc); return s; -- 2.16.6