[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-bugs] #23374 [Core Tor]: Circuit dirtiness is inconsistant with MaxCircuitDirtiness
#23374: Circuit dirtiness is inconsistant with MaxCircuitDirtiness
--------------------------+------------------------------
Reporter: Jaym | Owner: (none)
Type: defect | Status: new
Priority: Low | Milestone:
Component: Core Tor | Version: Tor: unspecified
Severity: Minor | Keywords:
Actual Points: | Parent ID:
Points: | Reviewer:
Sponsor: |
--------------------------+------------------------------
Hi,
I am experimenting some stuffs in Shadow and I am trying to have each
circuit different for each begin cell sent. To achieve that, I have set up
in my torrcs the following options:
SocksPort 127.0.0.1:9000 IsolateDestAddr
MaxCircuitDirtiness 1
Which should pick a different circuit for each begin cell sent. However,
sometimes a relay begin is sent over a previously used circuit. For
example 2 begin cells sent over circuit 3592237881:
{{{
Jan 01 00:42:04.000 [info] int
connection_handle_listener_read(connection_t *, int): New SOCKS connection
opened from 127.0.0.1.
Jan 01 00:42:04.000 [info] exit circ (length 3):
$75E3C46989B7DFD95D6C2078660D1FC3F04C175E(open)
$11D472A45E4F39A07E0827CE7FAEF259D97242E1(open)
$89C224C7F82640AD07B390A74957C5BF34B0B1D9(open)
Jan 01 00:42:04.000 [info] void link_apconn_to_circ(entry_connection_t *,
origin_circuit_t *, crypt_path_t *): Looks like completed circuit to
<skip>
Jan 01 00:42:04.000 [info] int
connection_ap_handshake_send_begin(entry_connection_t *): Sending relay
cell 0 on circ 3592237881 to begin stream 30786 with <skip>
Jan 01 00:42:04.000 [info] int
connection_ap_handshake_send_begin(entry_connection_t *): Address/port
sent, ap socket 4393, n_circ_id 3592237881
Jan 01 00:42:04.000 [info] int
connection_edge_process_inbuf(edge_connection_t *, int): data from edge
while in 'waiting for connect response' state. Leaving it on buffer.
Jan 01 00:42:05.000 [info] int connection_edge_process_relay_cell(cell_t
*, circuit_t *, edge_connection_t *, crypt_path_t *): data cell dropped,
unknown stream (streamid 14993).
Jan 01 00:42:05.000 [info] int connection_edge_process_relay_cell(cell_t
*, circuit_t *, edge_connection_t *, crypt_path_t *): data cell dropped,
unknown stream (streamid 14993).
Jan 01 00:42:05.000 [info] int connection_edge_process_relay_cell(cell_t
*, circuit_t *, edge_connection_t *, crypt_path_t *): data cell dropped,
unknown stream (streamid 14993).
Jan 01 00:42:05.000 [info] int
connection_edge_process_relay_cell_not_open(relay_header_t *, cell_t *,
circuit_t *, edge_connection_t *, crypt_path_t *): 'connected' <skip>
Jan 01 00:42:05.000 [info] exit circ (length 3):
$75E3C46989B7DFD95D6C2078660D1FC3F04C175E(open)
$11D472A45E4F39A07E0827CE7FAEF259D97242E1(open)
$89C224C7F82640AD07B390A74957C5BF34B0B1D9(open)
Jan 01 00:42:06.000 [info] int connection_edge_process_relay_cell(cell_t
*, circuit_t *, edge_connection_t *, crypt_path_t *): 4393: end cell
(closed normally) for stream 30786. Removing stream.
Jan 01 00:42:13.000 [info] int
connection_handle_listener_read(connection_t *, int): New SOCKS connection
opened from 127.0.0.1.
Jan 01 00:42:13.000 [info] exit circ (length 3):
$75E3C46989B7DFD95D6C2078660D1FC3F04C175E(open)
$11D472A45E4F39A07E0827CE7FAEF259D97242E1(open)
$89C224C7F82640AD07B390A74957C5BF34B0B1D9(open)
Jan 01 00:42:13.000 [info] void
pathbias_count_use_attempt(origin_circuit_t *): Used circuit 53 is already
in path state use succeeded. Circuit is a General-purpose client currently
open.
Jan 01 00:42:13.000 [info] void link_apconn_to_circ(entry_connection_t *,
origin_circuit_t *, crypt_path_t *): Looks like completed circuit to
<skip>
Jan 01 00:42:13.000 [info] int
connection_ap_handshake_send_begin(entry_connection_t *): Sending relay
cell 0 on circ 3592237881 to begin stream 30787 with <skip>
Jan 01 00:42:13.000 [info] int
connection_ap_handshake_send_begin(entry_connection_t *): Address/port
sent, ap socket 4441, n_circ_id 3592237881
}}}
Several observations:
- It happens only for 2 begin cells containing same IP
- It happens only when the timing between them is close enough (here 9
seconds)
My guess is that function approx_time() used to setup the timestamp_dirty
is very approximative (maybe related to Shadow?). circuit_is_acceptable()
does not seems to reject this circuit as this code should do:
{{{
if (circ->timestamp_dirty &&
circ->timestamp_dirty+get_options()->MaxCircuitDirtiness <= now)
return 0;
}}}
variable "now" is containing the value returned by approx_time() instead
of time(NULL) for performance reason.
So, this is not very much a problem but in my case, it bothers me.
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/23374>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
_______________________________________________
tor-bugs mailing list
tor-bugs@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-bugs