FreeBSD kernel IPv4 code
|
Go to the source code of this file.
Data Structures | |
struct | bbr_sendmap |
struct | bbr_rtt_sample |
struct | bbr_log |
struct | bbr_log_sysctl_out |
struct | bbr_stats |
struct | bbr_opts_stats |
struct | bbr_control |
struct | tcp_bbr |
Macros | |
#define | BBR_INITIAL_RTO 1000000 /* 1 second in micro-seconds */ |
#define | BBR_ACKED 0x0001 /* The remote endpoint acked this */ |
#define | BBR_WAS_RENEGED 0x0002 /* The peer reneged the ack */ |
#define | BBR_RXT_CLEARED 0x0004 /* ACK Cleared by the RXT timer */ |
#define | BBR_OVERMAX |
#define | BBR_SACK_PASSED 0x0010 /* A sack was done above this block */ |
#define | BBR_WAS_SACKPASS 0x0020 /* We retransmitted due to SACK pass */ |
#define | BBR_HAS_FIN 0x0040 /* segment is sent with fin */ |
#define | BBR_TLP 0x0080 /* segment sent as tail-loss-probe */ |
#define | BBR_HAS_SYN 0x0100 /* segment has the syn */ |
#define | BBR_MARKED_LOST |
#define | BBR_RWND_COLLAPSED 0x0400 /* The peer collapsed the rwnd on the segment */ |
#define | BBR_NUM_OF_RETRANS 7 |
#define | BBR_INCL_ENET_OH 0x01 |
#define | BBR_INCL_IP_OH 0x02 |
#define | BBR_INCL_TCP_OH 0x03 |
#define | BBR_LIMIT_TYPE_SPLIT 1 |
#define | BBR_SEGMENT_TIME_SIZE 1500 /* How many bytes in time_between */ |
#define | BBR_MIN_SEG 1460 /* MSS size */ |
#define | BBR_MAX_GAIN_VALUE 0xffff |
#define | BBR_TIMER_FUDGE 1500 /* 1.5ms in micro seconds */ |
#define | BBR_RED_BW_CONGSIG 0 /* We enter recovery and set using b/w */ |
#define | BBR_RED_BW_RATECAL 1 /* We are calculating the loss rate */ |
#define | BBR_RED_BW_USELRBW |
#define | BBR_RED_BW_SETHIGHLOSS |
#define | BBR_RED_BW_PE_CLREARLY |
#define | BBR_RED_BW_PE_CLAFDEL |
#define | BBR_RED_BW_REC_ENDCLL |
#define | BBR_RED_BW_PE_NOEARLY_OUT |
#define | BBR_CALC_BW 1 |
#define | BBR_CALC_LOSS 2 |
#define | BBR_RTT_BY_TIMESTAMP 0 |
#define | BBR_RTT_BY_EXACTMATCH 1 |
#define | BBR_RTT_BY_EARLIER_RET 2 |
#define | BBR_RTT_BY_THIS_RETRAN 3 |
#define | BBR_RTT_BY_SOME_RETRAN 4 |
#define | BBR_RTT_BY_TSMATCHING 5 |
#define | BBR_PERSISTS_FROM_1 1 |
#define | BBR_PERSISTS_FROM_2 2 |
#define | BBR_PERSISTS_FROM_3 3 |
#define | BBR_PERSISTS_FROM_4 4 |
#define | BBR_PERSISTS_FROM_5 5 |
#define | BBR_RTT_PROP 0 |
#define | BBR_RTT_RACK 1 |
#define | BBR_RTT_PKTRTT 2 |
#define | BBR_SRTT 3 |
#define | BBR_SACKED 0 |
#define | BBR_CUM_ACKED 1 |
#define | BBR_HIGH_SPEED 1000 |
#define | BBR_HIGHSPEED_NUM_MSS 12 |
#define | MAX_REDUCE_RXT |
#define | BBR_RS_RTT_EMPTY 0x00000001 /* Nothing yet stored in RTT's */ |
#define | BBR_RS_BW_EMPTY 0x00000002 /* Nothing yet stored in cDR */ |
#define | BBR_RS_RTT_VALID 0x00000004 /* We have at least one valid RTT */ |
#define | BBR_RS_BW_VAILD 0x00000008 /* We have a valid cDR */ |
#define | BBR_RS_EMPTY (BBR_RS_RTT_EMPTY|BBR_RS_BW_EMPTY) |
#define | BBR_RTTS_INIT 0 |
#define | BBR_RTTS_NEWRTT 1 |
#define | BBR_RTTS_RTTPROBE 2 |
#define | BBR_RTTS_WASIDLE 3 |
#define | BBR_RTTS_PERSIST 4 |
#define | BBR_RTTS_REACHTAR 5 |
#define | BBR_RTTS_ENTERPROBE 6 |
#define | BBR_RTTS_SHRINK_PG 7 |
#define | BBR_RTTS_SHRINK_PG_FINAL 8 |
#define | BBR_RTTS_NEW_TARGET 9 |
#define | BBR_RTTS_LEAVE_DRAIN 10 |
#define | BBR_RTTS_RESETS_VALUES 11 |
#define | BBR_NUM_RATES 5 |
#define | BBR_RT_FLAG_FREE 0x00 /* Is on the free list */ |
#define | BBR_RT_FLAG_INUSE 0x01 /* Has been allocated */ |
#define | BBR_RT_FLAG_READY 0x02 /* Ready to initiate a measurement. */ |
#define | BBR_RT_FLAG_CAPPED_PRE 0x04 /* Ready to cap if we send the next segment */ |
#define | BBR_RT_FLAG_CAPPED 0x08 /* Measurement is capped */ |
#define | BBR_RT_FLAG_PASTFA 0x10 /* Past the first ack. */ |
#define | BBR_RT_FLAG_LIMITED 0x20 /* Saw application/cwnd or rwnd limited period */ |
#define | BBR_RT_SEEN_A_ACK 0x40 /* A ack has been saved */ |
#define | BBR_RT_PREV_RTT_SET 0x80 /* There was a RTT set in */ |
#define | BBR_RT_PREV_SEND_TIME |
#define | BBR_RT_SET_GRADIENT 0x200 |
#define | BBR_RT_TS_VALID 0x400 |
#define | BBR_TO_FRM_TMR 1 |
#define | BBR_TO_FRM_TLP 2 |
#define | BBR_TO_FRM_RACK 3 |
#define | BBR_TO_FRM_KEEP 4 |
#define | BBR_TO_FRM_PERSIST 5 |
#define | BBR_TO_FRM_DELACK 6 |
#define | BBR_SEES_STRETCH_ACK 1 |
#define | BBR_SEES_COMPRESSED_ACKS 2 |
#define | TT_BBR_FR_TMR 0x2001 |
#define | BBR_SCALE 8 |
#define | BBR_UNIT (1 << BBR_SCALE) |
#define | BBR_NUM_RTTS_FOR_DEL_LIMIT |
#define | BBR_NUM_RTTS_FOR_GOOG_DEL_LIMIT |
#define | BBR_SECONDS_NO_RTT 10 /* 10 seconds with no RTT shrinkage */ |
#define | BBR_PROBERTT_MAX 200 /* 200ms */ |
#define | BBR_PROBERTT_NUM_MSS 4 |
#define | BBR_STARTUP_EPOCHS 3 |
#define | USECS_IN_MSEC 1000 |
#define | BBR_TIME_TO_SECONDS(a) (a / USECS_IN_SECOND) |
#define | BBR_TIME_TO_MILLI(a) (a / MS_IN_USEC) |
#define | BBR_TS_TO_MS(t) ((t+999)/MS_IN_USEC) |
#define | BBR_STATE_STARTUP 0x01 |
#define | BBR_STATE_DRAIN 0x02 |
#define | BBR_STATE_PROBE_BW 0x03 |
#define | BBR_STATE_PROBE_RTT 0x04 |
#define | BBR_STATE_IDLE_EXIT 0x05 |
#define | BBR_SUB_GAIN 0 /* State 0 where we are 5/4 BBR_UNIT */ |
#define | BBR_SUB_DRAIN 1 /* State 1 where we are at 3/4 BBR_UNIT */ |
#define | BBR_SUB_LEVEL1 2 /* State 1 first BBR_UNIT */ |
#define | BBR_SUB_LEVEL2 3 /* State 2nd BBR_UNIT */ |
#define | BBR_SUB_LEVEL3 4 /* State 3rd BBR_UNIT */ |
#define | BBR_SUB_LEVEL4 5 /* State 4th BBR_UNIT */ |
#define | BBR_SUB_LEVEL5 6 /* State 5th BBR_UNIT */ |
#define | BBR_SUB_LEVEL6 7 /* State last BBR_UNIT */ |
#define | BBR_SUBSTATE_COUNT 8 |
#define | BBR_REDUCE_AT_FR 5 |
#define | BBR_BIG_LOG_SIZE 300000 |
#define | BBR_STAT_SIZE (sizeof(struct bbr_stats)/sizeof(uint64_t)) |
#define | BBR_STAT_ADD(name, amm) counter_u64_add(bbr_stat_arry[(offsetof(struct bbr_stats, name)/sizeof(uint64_t))], (amm)) |
#define | BBR_STAT_INC(name) BBR_STAT_ADD(name, 1) |
#define | BBR_OPTS_SIZE (sizeof(struct bbr_stats)/sizeof(uint64_t)) |
#define | BBR_OPTS_ADD(name, amm) counter_u64_add(bbr_opts_arry[(offsetof(struct bbr_opts_stats, name)/sizeof(uint64_t))], (amm)) |
#define | BBR_OPTS_INC(name) BBR_OPTS_ADD(name, 1) |
#define | BBR_NUM_LOSS_RATES 3 |
#define | BBR_NUM_BW_RATES 3 |
#define | BBR_RECOVERY_LOWRTT 1 |
#define | BBR_RECOVERY_MEDRTT 2 |
#define | BBR_RECOVERY_HIGHRTT 3 |
#define | BBR_RECOVERY_EXTREMERTT 4 |
Functions | |
struct bbr_sendmap | __aligned (CACHE_LINE_SIZE) |
TAILQ_ENTRY (bbr_sendmap) r_next | |
TAILQ_HEAD (bbr_head, bbr_sendmap) | |
#define BBR_ACKED 0x0001 /* The remote endpoint acked this */ |
#define BBR_INITIAL_RTO 1000000 /* 1 second in micro-seconds */ |
#define BBR_MARKED_LOST |
#define BBR_NUM_RTTS_FOR_DEL_LIMIT |
#define BBR_NUM_RTTS_FOR_GOOG_DEL_LIMIT |
#define BBR_OPTS_ADD | ( | name, | |
amm | |||
) | counter_u64_add(bbr_opts_arry[(offsetof(struct bbr_opts_stats, name)/sizeof(uint64_t))], (amm)) |
#define BBR_OPTS_INC | ( | name | ) | BBR_OPTS_ADD(name, 1) |
#define BBR_OPTS_SIZE (sizeof(struct bbr_stats)/sizeof(uint64_t)) |
#define BBR_OVERMAX |
#define BBR_RED_BW_CONGSIG 0 /* We enter recovery and set using b/w */ |
#define BBR_RED_BW_PE_CLAFDEL |
#define BBR_RED_BW_PE_CLREARLY |
#define BBR_RED_BW_PE_NOEARLY_OUT |
#define BBR_RED_BW_RATECAL 1 /* We are calculating the loss rate */ |
#define BBR_RED_BW_REC_ENDCLL |
#define BBR_RED_BW_SETHIGHLOSS |
#define BBR_RED_BW_USELRBW |
#define BBR_RS_BW_EMPTY 0x00000002 /* Nothing yet stored in cDR */ |
#define BBR_RS_BW_VAILD 0x00000008 /* We have a valid cDR */ |
#define BBR_RS_EMPTY (BBR_RS_RTT_EMPTY|BBR_RS_BW_EMPTY) |
#define BBR_RS_RTT_EMPTY 0x00000001 /* Nothing yet stored in RTT's */ |
#define BBR_RS_RTT_VALID 0x00000004 /* We have at least one valid RTT */ |
#define BBR_RT_FLAG_CAPPED 0x08 /* Measurement is capped */ |
#define BBR_RT_FLAG_CAPPED_PRE 0x04 /* Ready to cap if we send the next segment */ |
#define BBR_RT_FLAG_LIMITED 0x20 /* Saw application/cwnd or rwnd limited period */ |
#define BBR_RT_FLAG_READY 0x02 /* Ready to initiate a measurement. */ |
#define BBR_RT_PREV_RTT_SET 0x80 /* There was a RTT set in */ |
#define BBR_RT_PREV_SEND_TIME |
#define BBR_RWND_COLLAPSED 0x0400 /* The peer collapsed the rwnd on the segment */ |
#define BBR_RXT_CLEARED 0x0004 /* ACK Cleared by the RXT timer */ |
#define BBR_SACK_PASSED 0x0010 /* A sack was done above this block */ |
#define BBR_SECONDS_NO_RTT 10 /* 10 seconds with no RTT shrinkage */ |
#define BBR_SEGMENT_TIME_SIZE 1500 /* How many bytes in time_between */ |
#define BBR_STAT_ADD | ( | name, | |
amm | |||
) | counter_u64_add(bbr_stat_arry[(offsetof(struct bbr_stats, name)/sizeof(uint64_t))], (amm)) |
#define BBR_STAT_INC | ( | name | ) | BBR_STAT_ADD(name, 1) |
#define BBR_STAT_SIZE (sizeof(struct bbr_stats)/sizeof(uint64_t)) |
#define BBR_SUB_DRAIN 1 /* State 1 where we are at 3/4 BBR_UNIT */ |
#define BBR_SUB_GAIN 0 /* State 0 where we are 5/4 BBR_UNIT */ |
#define BBR_TIME_TO_MILLI | ( | a | ) | (a / MS_IN_USEC) |
#define BBR_TIME_TO_SECONDS | ( | a | ) | (a / USECS_IN_SECOND) |
#define BBR_TLP 0x0080 /* segment sent as tail-loss-probe */ |
#define BBR_TS_TO_MS | ( | t | ) | ((t+999)/MS_IN_USEC) |
#define BBR_WAS_RENEGED 0x0002 /* The peer reneged the ack */ |
#define BBR_WAS_SACKPASS 0x0020 /* We retransmitted due to SACK pass */ |
#define MAX_REDUCE_RXT |
struct bbr_sendmap __aligned | ( | CACHE_LINE_SIZE | ) |
TAILQ_ENTRY | ( | bbr_sendmap | ) |
TAILQ_HEAD | ( | bbr_head | , |
bbr_sendmap | |||
) |
struct bbr_rtt_sample __aligned |
|
extern |
Definition at line 430 of file bbr.c.
Referenced by bbr_counter_destroy(), bbr_init_sysctls(), and sysctl_bbr_clear_lost().
|
extern |
Definition at line 429 of file bbr.c.
Referenced by bbr_counter_destroy(), bbr_init_sysctls(), and sysctl_bbr_clear_lost().
struct bbr_control r_ctl |
Definition at line 77 of file tcp_bbr.h.
Referenced by __bbr_get_bw(), bbr_adjust_for_hw_pacing(), bbr_check_probe_rtt_limits(), bbr_google_measurement(), bbr_output_wtime(), bbr_set_probebw_gains(), bbr_state_change(), bbr_timer_start(), bbr_update_rtt(), rack_ack_received(), rack_fast_output(), rack_get_pacing_delay(), rack_timer_start(), tcp_bbr_tso_size_check(), tcp_bbr_xmit_timer_commit(), and tcp_rack_xmit_timer().
uint8_t r_rtt_not_allowed |
Definition at line 11 of file tcp_bbr.h.
Referenced by bbr_clone_rsm().
int32_t(* r_substate) (struct mbuf *, struct tcphdr *, struct socket *, struct tcpcb *, struct tcpopt *, int32_t, int32_t, uint32_t, int32_t, int32_t, uint8_t) | ( | struct mbuf * | , |
struct tcphdr * | , | ||
struct socket * | , | ||
struct tcpcb * | , | ||
struct tcpopt * | , | ||
int32_t | , | ||
int32_t | , | ||
uint32_t | , | ||
int32_t | , | ||
int32_t | , | ||
uint8_t | |||
) |
uint32_t r_tim_lastsent[BBR_NUM_OF_RETRANS] |