udp: track connection startup timestamp 00/42900/2
authorFlorin Coras <[email protected]>
Fri, 25 Apr 2025 22:23:10 +0000 (18:23 -0400)
committerFlorin Coras <[email protected]>
Fri, 25 Apr 2025 22:35:40 +0000 (22:35 +0000)
Type: improvement

Change-Id: I8edea1beec82c8e2cfa87e0cc551609d46ee76a7
Signed-off-by: Florin Coras <[email protected]>
src/vnet/udp/udp.c
src/vnet/udp/udp.h
src/vnet/udp/udp_cli.c

index 2c2b744..4ed5a68 100644 (file)
@@ -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);
 
index 57a0fe9..6ff2200 100644 (file)
@@ -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))
index adae993..c910b50 100644 (file)
@@ -18,6 +18,7 @@
 #include <vppinfra/format_table.h>
 #include <vnet/udp/udp.h>
 #include <vnet/session/session_types.h>
+#include <vnet/session/session.h>
 
 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;