Tor 0.4.9.0-alpha-dev
Data Fields
conflux_leg_t Struct Reference

Data Fields

uint64_t last_seq_recv
 
uint64_t last_seq_sent
 
uint64_t circ_rtts_usec
 
uint64_t linked_sent_usec
 
circuit_tcirc
 

Detailed Description

Definition at line 30 of file conflux_st.h.

Field Documentation

◆ circ

circuit_t* circ

Circuit of this leg.

Definition at line 82 of file conflux_st.h.

Referenced by conflux_can_switch(), and conflux_decide_next_circ().

◆ circ_rtts_usec

uint64_t circ_rtts_usec

Current round-trip of the circuit, in usec.

XXX: In theory, we could use the congestion control RTTs directly off the circs, but congestion control code has assumptions about the RTT being 0 at the start of the circuit, which will not be the case here, because we get an RTT off the link circuit.

Definition at line 75 of file conflux_st.h.

Referenced by conflux_pick_first_leg().

◆ last_seq_recv

uint64_t last_seq_recv

For computing ooo_q insertion sequence numbers: Highest absolute sequence number received on each leg, before delivery.

As a receiver, this allows us to compute the absolute sequence number of a cell for delivery or insertion into the ooo_q. When a SWITCH cell is received on a leg, the absolute sequence number of that cell is the relative sequence number in that cell, plus the absolute sequence number of that leg from this array. The leg's sequence number is then updated to this value immediately.

In this way, we are able to assign absolute sequence numbers to cells immediately, regardless of how many legs or leg switches have occurred, and regardless of the delivery status of each cell versus if it must be queued.

Definition at line 47 of file conflux_st.h.

◆ last_seq_sent

uint64_t last_seq_sent

For relative sequencing: Highest absolute sequence number sent on each circuit. The overall absolute current sent sequence number is the highest of these values.

As a sender, this allows us to compute a relative sequence number when switching legs. When switching legs, the sender looks up its current absolute sequence number as the maximum of all legs. The sender then compares that to the current sequence number on the leg it is about to send on, and then computes the relative sequence number as the difference between the overall absolute sequence number and the sequence number from the sending leg.

In this way, we can use much smaller relative sequence numbers on the wire, as opposed to larger absolute values, at the expense of this bookkeeping overhead on each end.

Definition at line 66 of file conflux_st.h.

◆ linked_sent_usec

uint64_t linked_sent_usec

Exit side only: When was the LINKED cell sent? Used for RTT measurement that sets circ_rtts_usec when the LINKED_ACK is received.

Definition at line 79 of file conflux_st.h.


The documentation for this struct was generated from the following file: