Browse Source

etcp: rtt_last→ping_update_rtt раз в минуту; route_ping: ping_update_rtt на PING_RESP

topo_upd
Evgeny 2 months ago
parent
commit
c367144776
  1. 1
      src/routing_layer/route_ping.c
  2. 8
      src/transport_layer/etcp.c
  3. 3
      src/transport_layer/etcp.h

1
src/routing_layer/route_ping.c

@ -80,6 +80,7 @@ void route_ping_handle_resp(struct NAT_DETECTION* nd, struct ETCP_CONN* from_con
DEBUG_INFO(DEBUG_CATEGORY_BGP, "from=%s request_id=%08x sent=%u ok=%u avg_rtt=%u",
from_conn->log_name, (unsigned)resp->request_id,
(unsigned)resp->count_sent, (unsigned)resp->count_ok, (unsigned)resp->avg_rtt);
topo_node_ping_update_rtt(nd->inst->topo_groups, from_conn->peer_node_id, resp->avg_rtt);
struct route_ping_pending** cur = &nd->ping_pending;
while (*cur) {

8
src/transport_layer/etcp.c

@ -441,6 +441,7 @@ void etcp_conn_reset(struct ETCP_CONN* etcp) {
etcp->rtt_avg_10 = 0;
etcp->rtt_avg_100 = 0;
etcp->jitter = 0;
etcp->last_rtt_cb_time = 0;
etcp->bytes_sent_total = 0;
etcp->retransmissions_count = 0;
etcp->ack_packets_count = 0;
@ -1545,6 +1546,13 @@ void etcp_conn_input(struct ETCP_DGRAM* pkt) {
etcp->rtt_avg_10=rtt_max;
etcp->tt_last=tt_sum/cnt;
etcp->jitter=j_sum/cnt;
if (etcp->rtt_last) {
uint64_t now_tb = get_time_tb();
if (now_tb - etcp->last_rtt_cb_time > RTT_CB_PERIOD_TB) {
topo_node_ping_update_rtt(etcp->instance->topo_groups, etcp->peer_node_id, etcp->rtt_last);
etcp->last_rtt_cb_time = now_tb;
}
}
break;
}
case ETCP_SECTION_PAYLOAD: {

3
src/transport_layer/etcp.h

@ -199,6 +199,7 @@ struct ETCP_CONN {
uint16_t rtt_avg_10;
uint16_t rtt_avg_100;
uint16_t jitter;
uint64_t last_rtt_cb_time; // время последнего вызова ping_update_rtt (0.1ms)
uint32_t bytes_sent_total;
// uint32_t bytes_received_total; // Not used
uint32_t retransmissions_count;
@ -258,6 +259,8 @@ struct ETCP_CONN {
char* name; // Connection name from config (e.g., "client_test1"), or NULL/empty
};
#define RTT_CB_PERIOD_TB 600000 // 1 минута в 0.1ms
// Functions
struct ETCP_CONN* etcp_connection_create(struct UTUN_INSTANCE* instance, char* name);
void etcp_connection_close(struct ETCP_CONN* etcp);

Loading…
Cancel
Save