Expand description
Extra-info descriptor parsing for Tor relay and bridge extra-info documents.
Extra-info descriptors contain non-vital but interesting information about Tor relays such as usage statistics, bandwidth history, and directory request statistics. Unlike server descriptors, these are not required for Tor clients to function and are not fetched by default.
§Overview
Extra-info descriptors are published by relays whenever their server descriptor is published. They contain detailed statistics about:
- Bandwidth history - Read/write traffic over time
- Directory statistics - Request counts, response types, download speeds
- Cell statistics - Circuit cell processing metrics
- Exit statistics - Traffic per port for exit relays
- Bridge statistics - Client connection data for bridges
- Hidden service statistics - Onion service activity metrics
§Descriptor Types
| Type | Description | Signature |
|---|---|---|
| Relay | Standard relay extra-info | RSA signature |
| Bridge | Bridge relay extra-info | No signature (has router-digest) |
§Sources
Extra-info descriptors are available from:
- Control port - Via
GETINFO extra-info/digest/*(requiresDownloadExtraInfo 1) - Data directory - The
cached-extrainfofile - CollecTor - Archived descriptors from metrics.torproject.org
- Directory authorities - Via DirPort requests
§Example
use stem_rs::descriptor::extra_info::ExtraInfoDescriptor;
use stem_rs::descriptor::Descriptor;
let content = r#"extra-info example B2289C3EAB83ECD6EB916A2F481A02E6B76A0A48
published 2024-01-15 12:00:00
write-history 2024-01-15 12:00:00 (900 s) 1000000,2000000,3000000
read-history 2024-01-15 12:00:00 (900 s) 500000,1000000,1500000
"#;
let desc = ExtraInfoDescriptor::parse(content).unwrap();
assert_eq!(desc.nickname, "example");
assert!(desc.write_history.is_some());§Statistics Categories
§Bandwidth History
The read-history and write-history lines record bytes transferred
over time intervals (typically 900 seconds = 15 minutes).
§Directory Statistics
Directory mirrors report request statistics including:
- Client IP counts by country (
dirreq-v3-ips) - Request counts by country (
dirreq-v3-reqs) - Response status counts (
dirreq-v3-resp) - Download speed statistics (
dirreq-v3-direct-dl,dirreq-v3-tunneled-dl)
§Exit Statistics
Exit relays report traffic per destination port:
exit-kibibytes-written- Outbound trafficexit-kibibytes-read- Inbound trafficexit-streams-opened- Connection counts
§Bridge Statistics
Bridges report client connection data:
bridge-ips- Client counts by countrybridge-ip-versions- IPv4 vs IPv6 client countsbridge-ip-transports- Pluggable transport usage
§See Also
crate::descriptor::server- Server descriptors (published alongside extra-info)crate::descriptor::consensus- Network status documents
§See Also
- Tor Directory Protocol Specification, Section 2.1.2
- Python Stem’s
ExtraInfoDescriptorclass
Structs§
- Bandwidth
History - Bandwidth history data for a time period.
- Extra
Info Descriptor - Extra-info descriptor containing relay statistics and metadata.
- Transport
- Pluggable transport information.
Enums§
- DirResponse
- Response status for directory requests.
- DirStat
- Download statistics for directory requests.
- PortKey
- Key for port-based statistics in exit traffic data.