Skip to content

Commit

Permalink
count packets received when there was no ICE ping
Browse files Browse the repository at this point in the history
  • Loading branch information
richard-signal committed Feb 5, 2024
1 parent 40043d1 commit 43c5ff1
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 6 deletions.
16 changes: 13 additions & 3 deletions src/apps/relay/prom_server.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,11 @@ prom_counter_t *turn_total_sessions;

prom_gauge_t *turn_total_allocations;

// Signal change to add rtt metrics
// Signal change to add metrics
prom_counter_t *turn_rtt_client[8];
prom_counter_t *turn_rtt_peer[8];
prom_counter_t *turn_rtt_combined[8];
prom_counter_t *turn_with_no_ping_rcvp;

void start_prometheus_server(void) {
if (turn_params.prometheus == 0) {
Expand Down Expand Up @@ -115,7 +116,7 @@ void start_prometheus_server(void) {
turn_total_allocations = prom_collector_registry_must_register_metric(
prom_gauge_new("turn_total_allocations", "Represents current allocations number", 2, total_allocations_labels));

// Signal change to add rtt metrics
// Signal change to add metrics
// Create round trip time pseudo-histogram metrics
// values must be kept in sync with observation function below

Expand Down Expand Up @@ -170,6 +171,9 @@ void start_prometheus_server(void) {
turn_rtt_combined[7] = prom_collector_registry_must_register_metric(
prom_counter_new("turn_rtt_combined_more", "Represents combined round trip time of channel", 0, NULL));

turn_with_no_ping_rcvp = prom_collector_registry_must_register_metric(prom_counter_new(
"turn_with_no_ping_rcvp", "Count of packets received for TURN where no ICE ping has been observed", 0, NULL));

promhttp_set_active_collector_registry(NULL);

// some flags appeared first in microhttpd v0.9.53
Expand Down Expand Up @@ -288,7 +292,7 @@ int is_ipv6_enabled(void) {
return ret;
}

// Signal change to add rtt metrics
// Signal change to add metrics
void prom_observe_rtt(prom_counter_t *counter[8], int microseconds) {
if (microseconds <= 25000) {
prom_counter_add(counter[0], 1, NULL);
Expand Down Expand Up @@ -332,6 +336,12 @@ void prom_observe_rtt_combined(int microseconds) {
}
}

void prom_inc_turn_with_no_ping_rcvp(void) {
if (turn_params.prometheus == 1) {
prom_counter_add(turn_with_no_ping_rcvp, 1, NULL);
}
}

#else

void start_prometheus_server(void) {
Expand Down
6 changes: 4 additions & 2 deletions src/apps/relay/prom_server.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,10 +53,11 @@ extern prom_counter_t *turn_total_traffic_peer_sentb;

extern prom_gauge_t *turn_total_allocations_number;

// Signal change to add rtt metrics
// Signal change to add metrics
extern prom_counter_t *turn_rtt_client[8];
extern prom_counter_t *turn_rtt_peer[8];
extern prom_counter_t *turn_rtt_combined[8];
extern prom_counter_t *turn_with_no_ping_rcvp;

#define TURN_ALLOC_STR_MAX_SIZE (20)

Expand All @@ -78,11 +79,12 @@ void prom_inc_stun_binding_request(void);
void prom_inc_stun_binding_response(void);
void prom_inc_stun_binding_error(void);

// Signal change to add rtt metrics
// Signal change to add metrics
void prom_observe_rtt(prom_counter_t *counter[8], int microseconds);
void prom_observe_rtt_client(int microseconds);
void prom_observe_rtt_peer(int microseconds);
void prom_observe_rtt_combined(int microseconds);
void prom_inc_turn_with_no_ping_rcvp(void);

#else

Expand Down
8 changes: 7 additions & 1 deletion src/server/ns_turn_server.c
Original file line number Diff line number Diff line change
Expand Up @@ -2881,7 +2881,7 @@ static int handle_turn_binding(turn_turnserver *server, ts_ur_super_session *ss,
return 0;
}

// Signal change to add rtt metrics
// Signal change to add metrics
/////////////// inspect relayed packets, they might be ICE binds ///////////////

static void inspect_binds(turn_turnserver *server, ioa_net_data *in_buffer, turn_permission_info *tinfo, int from_peer,
Expand Down Expand Up @@ -2973,6 +2973,12 @@ static void inspect_binds(turn_turnserver *server, ioa_net_data *in_buffer, turn
tinfo->pings[from_client].ts.tv_sec = 0;
}
}
} else {
#if !defined(TURN_NO_PROMETHEUS)
if (tinfo->pings[0].lastrttus == 0 && tinfo->pings[1].lastrttus == 0) {
prom_inc_turn_with_no_ping_rcvp();
}
#endif
}
}

Expand Down

0 comments on commit 43c5ff1

Please sign in to comment.