Skip to content

Commit

Permalink
move recording of turn_with_no_ping_rcvp into post session metricing
Browse files Browse the repository at this point in the history
  • Loading branch information
richard-signal committed Feb 12, 2024
1 parent 43c5ff1 commit f02f455
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 25 deletions.
11 changes: 7 additions & 4 deletions src/apps/relay/ns_ioalib_engine_impl.c
Original file line number Diff line number Diff line change
Expand Up @@ -3631,25 +3631,28 @@ void turn_report_allocation_delete(void *a, SOCKET_TYPE socket_type, int family)
}
#endif
{
// Signal change to add metrics
if (ss->realm_options.name[0]) {

// Set prometheus traffic metrics
prom_set_finished_traffic(ss->realm_options.name, (const char *)ss->username,
(unsigned long)(ss->t_received_packets), (unsigned long)(ss->t_received_bytes),
(unsigned long)(ss->t_sent_packets), (unsigned long)(ss->t_sent_bytes), false);
(unsigned long)(ss->t_sent_packets), (unsigned long)(ss->t_sent_bytes),
(unsigned long)ss->t_before_ping_packets, false);
prom_set_finished_traffic(
ss->realm_options.name, (const char *)ss->username, (unsigned long)(ss->t_peer_received_packets),
(unsigned long)(ss->t_peer_received_bytes), (unsigned long)(ss->t_peer_sent_packets),
(unsigned long)(ss->t_peer_sent_bytes), true);
(unsigned long)(ss->t_peer_sent_bytes), 0, true);
} else {
// Set prometheus traffic metrics
prom_set_finished_traffic(NULL, (const char *)ss->username, (unsigned long)(ss->t_received_packets),
(unsigned long)(ss->t_received_bytes), (unsigned long)(ss->t_sent_packets),
(unsigned long)(ss->t_sent_bytes), false);
(unsigned long)(ss->t_sent_bytes), (unsigned long)ss->t_before_ping_packets,
false);
prom_set_finished_traffic(NULL, (const char *)ss->username, (unsigned long)(ss->t_peer_received_packets),
(unsigned long)(ss->t_peer_received_bytes),
(unsigned long)(ss->t_peer_sent_packets), (unsigned long)(ss->t_peer_sent_bytes),
true);
0, true);
}
turn_time_t ct = get_turn_server_time(server) - ss->start_time;
const uint32_t byte_to_kilobit = 125;
Expand Down
16 changes: 8 additions & 8 deletions src/apps/relay/prom_server.c
Original file line number Diff line number Diff line change
Expand Up @@ -209,8 +209,9 @@ void start_prometheus_server(void) {
return;
}

// Signal change to add metrics
void prom_set_finished_traffic(const char *realm, const char *user, unsigned long rsvp, unsigned long rsvb,
unsigned long sentp, unsigned long sentb, bool peer) {
unsigned long sentp, unsigned long sentb, unsigned long without_pingp, bool peer) {
if (turn_params.prometheus == 1) {

const char *label[] = {realm, NULL};
Expand Down Expand Up @@ -239,6 +240,10 @@ void prom_set_finished_traffic(const char *realm, const char *user, unsigned lon
prom_counter_add(turn_total_traffic_sentp, sentp, NULL);
prom_counter_add(turn_total_traffic_sentb, sentb, NULL);
}
// Signal change to add metrics
if (without_pingp) {
prom_counter_add(turn_with_no_ping_rcvp, without_pingp, NULL);
}
}
}

Expand Down Expand Up @@ -336,12 +341,6 @@ 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 All @@ -350,13 +349,14 @@ void start_prometheus_server(void) {
}

void prom_set_finished_traffic(const char *realm, const char *user, unsigned long rsvp, unsigned long rsvb,
unsigned long sentp, unsigned long sentb, bool peer) {
unsigned long sentp, unsigned long sentb, unsigned long without_pingp, bool peer) {
UNUSED_ARG(realm);
UNUSED_ARG(user);
UNUSED_ARG(rsvp);
UNUSED_ARG(rsvb);
UNUSED_ARG(sentp);
UNUSED_ARG(sentb);
UNUSED_ARG(without_pingp);
UNUSED_ARG(peer);
}

Expand Down
7 changes: 4 additions & 3 deletions src/apps/relay/prom_server.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,9 @@ extern "C" {

void start_prometheus_server(void);

// Signal change to add metrics
void prom_set_finished_traffic(const char *realm, const char *user, unsigned long rsvp, unsigned long rsvb,
unsigned long sentp, unsigned long sentb, bool peer);
unsigned long sentp, unsigned long sentb, unsigned long without_pingp, bool peer);

void prom_inc_allocation(SOCKET_TYPE type, int addr_family);
void prom_dec_allocation(SOCKET_TYPE type, int addr_family, unsigned long duration, unsigned long sent_rate_kbps);
Expand All @@ -84,14 +85,14 @@ 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

void start_prometheus_server(void);

// Signal change to add metrics
void prom_set_finished_traffic(const char *realm, const char *user, unsigned long rsvp, unsigned long rsvb,
unsigned long sentp, unsigned long sentb, bool peer);
unsigned long sentp, unsigned long sentb, unsigned long without_pingp, bool peer);

void prom_inc_allocation(SOCKET_TYPE type);
void prom_dec_allocation(SOCKET_TYPE type);
Expand Down
25 changes: 15 additions & 10 deletions src/server/ns_turn_server.c
Original file line number Diff line number Diff line change
Expand Up @@ -2884,10 +2884,10 @@ static int handle_turn_binding(turn_turnserver *server, ts_ur_super_session *ss,
// 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,
int is_channel) {
static int inspect_binds(turn_turnserver *server, ioa_net_data *in_buffer, turn_permission_info *tinfo, int from_peer,
int is_channel) {
if (!in_buffer || !tinfo || !(from_peer == 0 || from_peer == 1)) {
return;
return 0;
}
size_t len = ioa_network_buffer_get_size(in_buffer->nbh);
uint8_t *buf = ioa_network_buffer_data(in_buffer->nbh);
Expand All @@ -2911,7 +2911,7 @@ static void inspect_binds(turn_turnserver *server, ioa_net_data *in_buffer, turn
}

if (tinfo->pings[from_client].ts.tv_sec == 0) {
return;
return 0;
}

stun_tid tid;
Expand Down Expand Up @@ -2974,12 +2974,11 @@ static void inspect_binds(turn_turnserver *server, ioa_net_data *in_buffer, turn
}
}
} else {
#if !defined(TURN_NO_PROMETHEUS)
if (tinfo->pings[0].lastrttus == 0 && tinfo->pings[1].lastrttus == 0) {
prom_inc_turn_with_no_ping_rcvp();
return 1;
}
#endif
}
return 0;
}

static int handle_turn_send(turn_turnserver *server, ts_ur_super_session *ss, int *err_code, const uint8_t **reason,
Expand Down Expand Up @@ -3065,7 +3064,9 @@ static int handle_turn_send(turn_turnserver *server, ts_ur_super_session *ss, in
ioa_network_buffer_set_size(nbh, len);
}
// Signal change to add rtt metrics
inspect_binds(server, in_buffer, tinfo, 0, 0);
if (inspect_binds(server, in_buffer, tinfo, 0, 0)) {
++(ss->t_before_ping_packets);
}

ioa_network_buffer_header_init(nbh);
int skip = 0;
Expand Down Expand Up @@ -4128,7 +4129,9 @@ static int write_to_peerchannel(ts_ur_super_session *ss, uint16_t chnum, ioa_net
// Signal change to add rtt metrics
turn_turnserver *server = (turn_turnserver *)ss->server;
turn_permission_info *tinfo = (turn_permission_info *)(chn->owner);
inspect_binds(server, in_buffer, tinfo, 0, 1);
if (inspect_binds(server, in_buffer, tinfo, 0, 1)) {
++(ss->t_before_ping_packets);
}

ioa_network_buffer_header_init(nbh);

Expand Down Expand Up @@ -4824,7 +4827,9 @@ static void peer_input_handler(ioa_socket_handle s, int event_type, ioa_net_data
if (tinfo) {
chnum = get_turn_channel_number(tinfo, &(in_buffer->src_addr));
// Signal change to add rtt metrics
inspect_binds(server, in_buffer, tinfo, 1, chnum != 0);
if (inspect_binds(server, in_buffer, tinfo, 1, chnum != 0)) {
++(ss->t_before_ping_packets);
}
} else if (!(server->server_relay)) {
return;
}
Expand Down
2 changes: 2 additions & 0 deletions src/server/ns_turn_session.h
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,8 @@ struct _ts_ur_super_session {
char s_mobile_id[33];
/* Bandwidth */
band_limit_t bps;
// Signal change to add metrics
uint64_t t_before_ping_packets;
};

////// Session info for statistics //////
Expand Down

0 comments on commit f02f455

Please sign in to comment.