tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

core_or.md (1916B)


@dir core/or @brief core/or: Onion routing happens here!

This is the central part of Tor that handles the core tasks of onion routing: building circuit, handling circuits, attaching circuit to streams, moving data around, and so forth.

Some aspects of this module should probably be refactored into others.

Notable files here include:

channel.c : Generic channel implementation. Channels handle sending and receiving cells among tor nodes.

channeltls.c : Channel implementation for TLS-based OR connections. Uses connection_or.c.

circuitbuild.c : Code for constructing circuits and choosing their paths. (Note: this module could plausibly be split into handling the client side, the server side, and the path generation aspects of circuit building.)

circuitlist.c : Code for maintaining and navigating the global list of circuits.

circuitmux.c : Generic circuitmux implementation. A circuitmux handles deciding, for a particular channel, which circuit should write next.

circuitmux_ewma.c : A circuitmux implementation based on the EWMA (exponentially weighted moving average) algorithm.

circuituse.c : Code to actually send and receive data on circuits.

command.c : Handles incoming cells on channels.

connection.c : Generic and common connection tools, and implementation for the simpler connection types.

connection_edge.c : Implementation for entry and exit connections.

connection_or.c : Implementation for OR connections (the ones that send cells over TLS).

onion.c : Generic code for generating and responding to CREATE and CREATED cells, and performing the appropriate onion handshakes. Also contains code to manage the server-side onion queue.

relay.c : Handles particular types of relay cells, and provides code to receive, encrypt, route, and interpret relay cells.

scheduler.c : Decides which channel/circuit pair is ready to receive the next cell.