GNUnet 0.21.1
TransportFlowControlMessage Struct Reference

Message for Transport-to-Transport Flow control. More...

Collaboration diagram for TransportFlowControlMessage:
[legend]

Data Fields

struct GNUNET_MessageHeader header
 Type is GNUNET_MESSAGE_TYPE_TRANSPORT_FLOW_CONTROL. More...
 
uint32_t seq
 Sequence number of the flow control message. More...
 
uint64_t inbound_window_size
 Flow control window size in bytes, in NBO. More...
 
uint64_t outbound_sent
 How many bytes has the sender sent that count for flow control at this time. More...
 
uint64_t outbound_window_size
 Latest flow control window size we learned from the other peer, in bytes, in NBO. More...
 
struct GNUNET_TIME_AbsoluteNBO sender_time
 Timestamp of the sender. More...
 
unsigned int number_of_addresses
 Number of TransportGlobalNattedAddress following the struct. More...
 
size_t size_of_addresses
 Size of all the addresses attached to all TransportGlobalNattedAddress. More...
 

Detailed Description

Message for Transport-to-Transport Flow control.

Specifies the size of the flow control window, including how much we believe to have consumed (at transmission time), how much we believe to be allowed (at transmission time), and how much the other peer is allowed to send to us, and how much data we already received from the other peer.

Definition at line 938 of file gnunet-service-transport.c.

Field Documentation

◆ header

struct GNUNET_MessageHeader TransportFlowControlMessage::header

◆ seq

uint32_t TransportFlowControlMessage::seq

Sequence number of the flow control message.

Incremented by one for each message. Starts at zero when a virtual link goes up. Used to detect one-sided connection drops. On wrap-around, the flow control counters will be reset as if the connection had dropped.

Definition at line 952 of file gnunet-service-transport.c.

Referenced by consider_sending_fc(), and handle_flow_control().

◆ inbound_window_size

uint64_t TransportFlowControlMessage::inbound_window_size

Flow control window size in bytes, in NBO.

The receiver can send this many bytes at most.

Definition at line 958 of file gnunet-service-transport.c.

Referenced by consider_sending_fc(), and handle_flow_control().

◆ outbound_sent

uint64_t TransportFlowControlMessage::outbound_sent

How many bytes has the sender sent that count for flow control at this time.

Used to allow the receiver to estimate the packet loss rate.

Definition at line 965 of file gnunet-service-transport.c.

Referenced by consider_sending_fc(), and handle_flow_control().

◆ outbound_window_size

uint64_t TransportFlowControlMessage::outbound_window_size

Latest flow control window size we learned from the other peer, in bytes, in NBO.

We are limited to sending at most this many bytes to the other peer. May help the other peer detect when flow control messages were lost and should thus be retransmitted. In particular, if the delta to outbound_sent is too small, this signals that we are stalled.

Definition at line 975 of file gnunet-service-transport.c.

Referenced by consider_sending_fc(), and handle_flow_control().

◆ sender_time

struct GNUNET_TIME_AbsoluteNBO TransportFlowControlMessage::sender_time

Timestamp of the sender.

Must be monotonically increasing! Used to enable receiver to ignore out-of-order packets in combination with the seq. Note that seq will go down (back to zero) whenever either side believes the connection was dropped, allowing the peers to detect that they need to reset the counters for the number of bytes sent!

Definition at line 985 of file gnunet-service-transport.c.

Referenced by consider_sending_fc(), and handle_flow_control().

◆ number_of_addresses

unsigned int TransportFlowControlMessage::number_of_addresses

Number of TransportGlobalNattedAddress following the struct.

Definition at line 991 of file gnunet-service-transport.c.

Referenced by check_flow_control(), and handle_flow_control().

◆ size_of_addresses

size_t TransportFlowControlMessage::size_of_addresses

Size of all the addresses attached to all TransportGlobalNattedAddress.

Definition at line 996 of file gnunet-service-transport.c.

Referenced by check_flow_control().


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