tor  master
circuitstats.h
Go to the documentation of this file.
1 /* Copyright (c) 2001 Matej Pfajfar.
2  * Copyright (c) 2001-2004, Roger Dingledine.
3  * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
4  * Copyright (c) 2007-2017, The Tor Project, Inc. */
5 /* See LICENSE for licensing information */
6 
12 #ifndef TOR_CIRCUITSTATS_H
13 #define TOR_CIRCUITSTATS_H
14 
15 const circuit_build_times_t *get_circuit_build_times(void);
16 circuit_build_times_t *get_circuit_build_times_mutable(void);
18 double get_circuit_build_timeout_ms(void);
19 
20 int circuit_build_times_disabled(const or_options_t *options);
22  int ignore_consensus);
23 
24 int circuit_build_times_enough_to_compute(const circuit_build_times_t *cbt);
25 void circuit_build_times_update_state(const circuit_build_times_t *cbt,
26  or_state_t *state);
27 int circuit_build_times_parse_state(circuit_build_times_t *cbt,
28  or_state_t *state);
29 void circuit_build_times_count_timeout(circuit_build_times_t *cbt,
30  int did_onehop);
31 int circuit_build_times_count_close(circuit_build_times_t *cbt,
32  int did_onehop, time_t start_time);
33 void circuit_build_times_set_timeout(circuit_build_times_t *cbt);
34 int circuit_build_times_add_time(circuit_build_times_t *cbt,
35  build_time_t time);
36 int circuit_build_times_needs_circuits(const circuit_build_times_t *cbt);
38 
39 int circuit_build_times_needs_circuits_now(const circuit_build_times_t *cbt);
40 void circuit_build_times_init(circuit_build_times_t *cbt);
41 void circuit_build_times_free_timeouts(circuit_build_times_t *cbt);
42 void circuit_build_times_new_consensus_params(circuit_build_times_t *cbt,
43  networkstatus_t *ns);
44 double circuit_build_times_timeout_rate(const circuit_build_times_t *cbt);
45 double circuit_build_times_close_rate(const circuit_build_times_t *cbt);
46 
47 void circuit_build_times_update_last_circ(circuit_build_times_t *cbt);
49 
50 #ifdef CIRCUITSTATS_PRIVATE
51 STATIC double circuit_build_times_calculate_timeout(circuit_build_times_t *cbt,
52  double quantile);
53 STATIC int circuit_build_times_update_alpha(circuit_build_times_t *cbt);
54 STATIC void circuit_build_times_reset(circuit_build_times_t *cbt);
55 
56 /* Network liveness functions */
58  circuit_build_times_t *cbt);
59 #endif /* defined(CIRCUITSTATS_PRIVATE) */
60 
61 #ifdef TOR_UNIT_TESTS
62 build_time_t circuit_build_times_generate_sample(circuit_build_times_t *cbt,
63  double q_lo, double q_hi);
64 double circuit_build_times_cdf(circuit_build_times_t *cbt, double x);
65 void circuit_build_times_initial_alpha(circuit_build_times_t *cbt,
66  double quantile, double time_ms);
67 void circuitbuild_running_unit_tests(void);
68 #endif /* defined(TOR_UNIT_TESTS) */
69 
70 /* Network liveness functions */
71 void circuit_build_times_network_is_live(circuit_build_times_t *cbt);
72 int circuit_build_times_network_check_live(const circuit_build_times_t *cbt);
73 void circuit_build_times_network_circ_success(circuit_build_times_t *cbt);
74 
75 #ifdef CIRCUITSTATS_PRIVATE
76 
77 struct circuit_build_times_s {
79  build_time_t circuit_build_times[CBT_NCIRCUITS_TO_OBSERVE];
81  int build_times_idx;
83  int total_build_times;
85  network_liveness_t liveness;
87  time_t last_circ_at;
89  build_time_t Xm;
91  double alpha;
93  int have_computed_timeout;
96  double timeout_ms;
98  double close_ms;
101  uint32_t num_circ_succeeded;
104  uint32_t num_circ_timeouts;
107  uint32_t num_circ_closed;
108 
109 };
110 #endif /* defined(CIRCUITSTATS_PRIVATE) */
111 
112 #endif /* !defined(TOR_CIRCUITSTATS_H) */
113 
void circuit_build_times_set_timeout(circuit_build_times_t *cbt)
Definition: circuitstats.c:1812
Definition: or.h:3657
void circuit_build_times_free_timeouts(circuit_build_times_t *cbt)
Definition: circuitstats.c:588
uint32_t build_time_t
Definition: or.h:4870
int circuit_build_times_count_close(circuit_build_times_t *cbt, int did_onehop, time_t start_time)
Definition: circuitstats.c:1711
void circuit_build_times_init(circuit_build_times_t *cbt)
Definition: circuitstats.c:562
double circuit_build_times_close_rate(const circuit_build_times_t *cbt)
Definition: circuitstats.c:1689
const circuit_build_times_t * get_circuit_build_times(void)
Definition: circuitstats.c:73
double circuit_build_times_timeout_rate(const circuit_build_times_t *cbt)
Definition: circuitstats.c:1670
void circuit_build_times_new_consensus_params(circuit_build_times_t *cbt, networkstatus_t *ns)
Definition: circuitstats.c:423
#define CBT_NCIRCUITS_TO_OBSERVE
Definition: or.h:4859
STATIC double circuit_build_times_calculate_timeout(circuit_build_times_t *cbt, double quantile)
Definition: circuitstats.c:1275
double get_circuit_build_close_time_ms(void)
Definition: circuitstats.c:88
Definition: or.h:2687
STATIC int circuit_build_times_network_check_changed(circuit_build_times_t *cbt)
Definition: circuitstats.c:1607
int circuit_build_times_parse_state(circuit_build_times_t *cbt, or_state_t *state)
Definition: circuitstats.c:1051
void circuit_build_times_count_timeout(circuit_build_times_t *cbt, int did_onehop)
Definition: circuitstats.c:1743
Definition: or.h:4708
int circuit_build_times_disabled(const or_options_t *options)
Definition: circuitstats.c:113
void circuit_build_times_network_circ_success(circuit_build_times_t *cbt)
Definition: circuitstats.c:1467
void circuit_build_times_mark_circ_as_measurement_only(origin_circuit_t *circ)
Definition: circuitstats.c:634
Definition: or.h:4944
int circuit_build_times_disabled_(const or_options_t *options, int ignore_consensus)
Definition: circuitstats.c:120
circuit_build_times_t * get_circuit_build_times_mutable(void)
Definition: circuitstats.c:80
int circuit_build_times_enough_to_compute(const circuit_build_times_t *cbt)
Definition: circuitstats.c:252
int circuit_build_times_network_check_live(const circuit_build_times_t *cbt)
Definition: circuitstats.c:1587
double get_circuit_build_timeout_ms(void)
Definition: circuitstats.c:96
int circuit_build_times_add_time(circuit_build_times_t *cbt, build_time_t time)
Definition: circuitstats.c:753
void circuit_build_times_update_state(const circuit_build_times_t *cbt, or_state_t *state)
Definition: circuitstats.c:925
STATIC void circuit_build_times_reset(circuit_build_times_t *cbt)
Definition: circuitstats.c:542
int circuit_build_times_needs_circuits(const circuit_build_times_t *cbt)
Definition: circuitstats.c:1380
STATIC int circuit_build_times_update_alpha(circuit_build_times_t *cbt)
Definition: circuitstats.c:1187
void circuit_build_times_handle_completed_hop(origin_circuit_t *circ)
Definition: circuitstats.c:676
int circuit_build_times_needs_circuits_now(const circuit_build_times_t *cbt)
Definition: circuitstats.c:1391
Definition: or.h:3256
void circuit_build_times_network_is_live(circuit_build_times_t *cbt)
Definition: circuitstats.c:1414