![]() |
FD.io VPP
v19.08-27-gf4dcae4
Vector Packet Processing
|
Go to the source code of this file.
Data Structures | |
struct | tcp_bt_sample_ |
struct | tcp_rate_sample_ |
struct | tcp_byte_tracker_ |
struct | tcp_errors_ |
struct | tcp_worker_ctx_ |
struct | tcp_iss_seed_ |
struct | tcp_configuration_ |
Macros | |
#define | TCP_TICK 0.001 |
TCP tick period (s) More... | |
#define | THZ (u32) (1/TCP_TICK) |
TCP tick frequency. More... | |
#define | TCP_TSTAMP_RESOLUTION TCP_TICK |
Time stamp resolution. More... | |
#define | TCP_PAWS_IDLE 24 * 24 * 60 * 60 * THZ |
24 days More... | |
#define | TCP_FIB_RECHECK_PERIOD 1 * THZ |
Recheck every 1s. More... | |
#define | TCP_MAX_OPTION_SPACE 40 |
#define | TCP_CC_DATA_SZ 24 |
#define | TCP_DUPACK_THRESHOLD 3 |
#define | TCP_IW_N_SEGMENTS 10 |
#define | TCP_ALWAYS_ACK 1 |
On/off delayed acks. More... | |
#define | TCP_USE_SACKS 1 |
Disable only for testing. More... | |
#define | foreach_tcp_fsm_state |
TCP FSM state definitions as per RFC793. More... | |
#define | foreach_tcp_timer |
TCP timers. More... | |
#define | TCP_TIMER_HANDLE_INVALID ((u32) ~0) |
#define | TCP_TIMER_TICK 0.1 |
Timer tick in seconds. More... | |
#define | TCP_TO_TIMER_TICK TCP_TICK*10 |
Factor for converting ticks to timer ticks. More... | |
#define | TCP_RTO_MAX 60 * THZ /* Min max RTO (60s) as per RFC6298 */ |
#define | TCP_RTO_MIN 0.2 * THZ /* Min RTO (200ms) - lower than standard */ |
#define | TCP_RTT_MAX 30 * THZ /* 30s (probably too much) */ |
#define | TCP_RTO_SYN_RETRIES 3 /* SYN retries without doubling RTO */ |
#define | TCP_RTO_INIT 1 * THZ /* Initial retransmit timer */ |
#define | TCP_RTO_BOFF_MAX 8 /* Max number of retries before reset */ |
#define | TCP_ESTABLISH_TIME (60 * THZ) /* Connection establish timeout */ |
#define | foreach_tcp_connection_flag |
TCP connection flags. More... | |
#define | TCP_SCOREBOARD_TRACE (0) |
#define | TCP_MAX_SACK_BLOCKS 256 |
Max number of SACK blocks stored. More... | |
#define | TCP_INVALID_SACK_HOLE_INDEX ((u32)~0) |
#define | tcp_scoreboard_trace_add(_tc, _ack) |
#define | TCP_BTS_INVALID_INDEX ((u32)~0) |
#define | tcp_fastrecovery_on(tc) (tc)->flags |= TCP_CONN_FAST_RECOVERY |
#define | tcp_fastrecovery_off(tc) (tc)->flags &= ~TCP_CONN_FAST_RECOVERY |
#define | tcp_recovery_on(tc) (tc)->flags |= TCP_CONN_RECOVERY |
#define | tcp_recovery_off(tc) (tc)->flags &= ~TCP_CONN_RECOVERY |
#define | tcp_in_fastrecovery(tc) ((tc)->flags & TCP_CONN_FAST_RECOVERY) |
#define | tcp_in_recovery(tc) ((tc)->flags & (TCP_CONN_RECOVERY)) |
#define | tcp_in_slowstart(tc) (tc->cwnd < tc->ssthresh) |
#define | tcp_disconnect_pending(tc) ((tc)->flags & TCP_CONN_DCNT_PENDING) |
#define | tcp_disconnect_pending_on(tc) ((tc)->flags |= TCP_CONN_DCNT_PENDING) |
#define | tcp_disconnect_pending_off(tc) ((tc)->flags &= ~TCP_CONN_DCNT_PENDING) |
#define | tcp_fastrecovery_first(tc) ((tc)->flags & TCP_CONN_FRXT_FIRST) |
#define | tcp_fastrecovery_first_on(tc) ((tc)->flags |= TCP_CONN_FRXT_FIRST) |
#define | tcp_fastrecovery_first_off(tc) ((tc)->flags &= ~TCP_CONN_FRXT_FIRST) |
#define | tcp_in_cong_recovery(tc) |
#define | tcp_zero_rwnd_sent(tc) ((tc)->flags & TCP_CONN_ZERO_RWND_SENT) |
#define | tcp_zero_rwnd_sent_on(tc) (tc)->flags |= TCP_CONN_ZERO_RWND_SENT |
#define | tcp_zero_rwnd_sent_off(tc) (tc)->flags &= ~TCP_CONN_ZERO_RWND_SENT |
#define | tcp_error(n, s) TCP_ERROR_##n, |
#define | tcp_cfg tcp_main.cfg |
#define | tcp_node_index(node_id, is_ip4) ((is_ip4) ? tcp4_##node_id##_node.index : tcp6_##node_id##_node.index) |
#define | tcp_trajectory_add_start(b, start) |
#define | seq_lt(_s1, _s2) ((i32)((_s1)-(_s2)) < 0) |
#define | seq_leq(_s1, _s2) ((i32)((_s1)-(_s2)) <= 0) |
#define | seq_gt(_s1, _s2) ((i32)((_s1)-(_s2)) > 0) |
#define | seq_geq(_s1, _s2) ((i32)((_s1)-(_s2)) >= 0) |
#define | seq_max(_s1, _s2) (seq_gt((_s1), (_s2)) ? (_s1) : (_s2)) |
#define | timestamp_lt(_t1, _t2) ((i32)((_t1)-(_t2)) < 0) |
#define | timestamp_leq(_t1, _t2) ((i32)((_t1)-(_t2)) <= 0) |
#define | tcp_validate_txf_size(_tc, _a) |
Typedefs | |
typedef enum _tcp_state | tcp_state_t |
typedef enum _tcp_timers | tcp_timers_e |
typedef void( | timer_expiration_handler) (u32 index) |
typedef enum _tcp_connection_flag_bits | tcp_connection_flag_bits_e |
typedef enum _tcp_connection_flag | tcp_connection_flags_e |
typedef struct _scoreboard_trace_elt | scoreboard_trace_elt_t |
typedef struct _sack_scoreboard_hole | sack_scoreboard_hole_t |
typedef struct _sack_scoreboard | sack_scoreboard_t |
typedef enum tcp_bts_flags_ | tcp_bts_flags_t |
typedef struct tcp_bt_sample_ | tcp_bt_sample_t |
typedef struct tcp_rate_sample_ | tcp_rate_sample_t |
typedef struct tcp_byte_tracker_ | tcp_byte_tracker_t |
typedef enum _tcp_cc_algorithm_type | tcp_cc_algorithm_type_e |
typedef struct _tcp_cc_algorithm | tcp_cc_algorithm_t |
typedef enum _tcp_cc_ack_t | tcp_cc_ack_t |
typedef enum tcp_cc_event_ | tcp_cc_event_t |
typedef struct tcp_errors_ | tcp_errors_t |
typedef struct _tcp_connection | tcp_connection_t |
typedef enum _tcp_error | tcp_error_t |
typedef struct _tcp_lookup_dispatch | tcp_lookup_dispatch_t |
typedef struct tcp_worker_ctx_ | tcp_worker_ctx_t |
typedef struct tcp_iss_seed_ | tcp_iss_seed_t |
typedef struct tcp_configuration_ | tcp_configuration_t |
typedef struct _tcp_main | tcp_main_t |
Enumerations | |
enum | tcp_bts_flags_ { TCP_BTS_IS_RXT = 1, TCP_BTS_IS_APP_LIMITED = 1 << 1 } |
enum | tcp_cc_event_ { TCP_CC_EVT_START_TX } |
#define foreach_tcp_connection_flag |
TCP connection flags.
#define foreach_tcp_fsm_state |
TCP FSM state definitions as per RFC793.
#define foreach_tcp_timer |
#define seq_max | ( | _s1, | |
_s2 | |||
) | (seq_gt((_s1), (_s2)) ? (_s1) : (_s2)) |
#define tcp_disconnect_pending | ( | tc | ) | ((tc)->flags & TCP_CONN_DCNT_PENDING) |
#define tcp_disconnect_pending_off | ( | tc | ) | ((tc)->flags &= ~TCP_CONN_DCNT_PENDING) |
#define tcp_disconnect_pending_on | ( | tc | ) | ((tc)->flags |= TCP_CONN_DCNT_PENDING) |
#define TCP_ESTABLISH_TIME (60 * THZ) /* Connection establish timeout */ |
#define tcp_fastrecovery_first | ( | tc | ) | ((tc)->flags & TCP_CONN_FRXT_FIRST) |
#define tcp_fastrecovery_first_off | ( | tc | ) | ((tc)->flags &= ~TCP_CONN_FRXT_FIRST) |
#define tcp_fastrecovery_first_on | ( | tc | ) | ((tc)->flags |= TCP_CONN_FRXT_FIRST) |
#define tcp_fastrecovery_off | ( | tc | ) | (tc)->flags &= ~TCP_CONN_FAST_RECOVERY |
#define tcp_fastrecovery_on | ( | tc | ) | (tc)->flags |= TCP_CONN_FAST_RECOVERY |
#define tcp_in_cong_recovery | ( | tc | ) |
#define tcp_in_fastrecovery | ( | tc | ) | ((tc)->flags & TCP_CONN_FAST_RECOVERY) |
#define tcp_in_recovery | ( | tc | ) | ((tc)->flags & (TCP_CONN_RECOVERY)) |
#define TCP_MAX_SACK_BLOCKS 256 |
#define tcp_node_index | ( | node_id, | |
is_ip4 | |||
) | ((is_ip4) ? tcp4_##node_id##_node.index : tcp6_##node_id##_node.index) |
#define tcp_recovery_off | ( | tc | ) | (tc)->flags &= ~TCP_CONN_RECOVERY |
#define tcp_recovery_on | ( | tc | ) | (tc)->flags |= TCP_CONN_RECOVERY |
#define TCP_RTO_BOFF_MAX 8 /* Max number of retries before reset */ |
#define TCP_RTO_MAX 60 * THZ /* Min max RTO (60s) as per RFC6298 */ |
#define TCP_RTO_MIN 0.2 * THZ /* Min RTO (200ms) - lower than standard */ |
#define TCP_RTO_SYN_RETRIES 3 /* SYN retries without doubling RTO */ |
#define TCP_TO_TIMER_TICK TCP_TICK*10 |
#define tcp_validate_txf_size | ( | _tc, | |
_a | |||
) |
#define tcp_zero_rwnd_sent | ( | tc | ) | ((tc)->flags & TCP_CONN_ZERO_RWND_SENT) |
#define tcp_zero_rwnd_sent_off | ( | tc | ) | (tc)->flags &= ~TCP_CONN_ZERO_RWND_SENT |
#define tcp_zero_rwnd_sent_on | ( | tc | ) | (tc)->flags |= TCP_CONN_ZERO_RWND_SENT |
typedef struct _sack_scoreboard_hole sack_scoreboard_hole_t |
typedef struct _sack_scoreboard sack_scoreboard_t |
typedef struct _scoreboard_trace_elt scoreboard_trace_elt_t |
typedef struct tcp_bt_sample_ tcp_bt_sample_t |
typedef enum tcp_bts_flags_ tcp_bts_flags_t |
typedef struct tcp_byte_tracker_ tcp_byte_tracker_t |
typedef enum _tcp_cc_ack_t tcp_cc_ack_t |
typedef struct _tcp_cc_algorithm tcp_cc_algorithm_t |
typedef enum _tcp_cc_algorithm_type tcp_cc_algorithm_type_e |
typedef enum tcp_cc_event_ tcp_cc_event_t |
typedef struct tcp_configuration_ tcp_configuration_t |
typedef enum _tcp_connection_flag_bits tcp_connection_flag_bits_e |
typedef enum _tcp_connection_flag tcp_connection_flags_e |
typedef struct _tcp_connection tcp_connection_t |
typedef enum _tcp_error tcp_error_t |
typedef struct tcp_errors_ tcp_errors_t |
typedef struct tcp_iss_seed_ tcp_iss_seed_t |
typedef struct _tcp_lookup_dispatch tcp_lookup_dispatch_t |
typedef struct _tcp_main tcp_main_t |
typedef struct tcp_rate_sample_ tcp_rate_sample_t |
typedef enum _tcp_state tcp_state_t |
typedef enum _tcp_timers tcp_timers_e |
typedef struct tcp_worker_ctx_ tcp_worker_ctx_t |
enum tcp_bts_flags_ |
enum tcp_cc_event_ |
void newreno_rcv_cong_ack | ( | tcp_connection_t * | tc, |
tcp_cc_ack_t | ack_type, | ||
tcp_rate_sample_t * | rs | ||
) |
void scoreboard_clear | ( | sack_scoreboard_t * | sb | ) |
Definition at line 906 of file tcp_input.c.
sack_scoreboard_hole_t* scoreboard_first_hole | ( | sack_scoreboard_t * | sb | ) |
sack_scoreboard_hole_t* scoreboard_get_hole | ( | sack_scoreboard_t * | sb, |
u32 | index | ||
) |
void scoreboard_init | ( | sack_scoreboard_t * | sb | ) |
sack_scoreboard_hole_t* scoreboard_last_hole | ( | sack_scoreboard_t * | sb | ) |
sack_scoreboard_hole_t* scoreboard_next_hole | ( | sack_scoreboard_t * | sb, |
sack_scoreboard_hole_t * | hole | ||
) |
sack_scoreboard_hole_t* scoreboard_next_rxt_hole | ( | sack_scoreboard_t * | sb, |
sack_scoreboard_hole_t * | start, | ||
u8 | have_unsent, | ||
u8 * | can_rescue, | ||
u8 * | snd_limited | ||
) |
Figure out the next hole to retransmit.
Follows logic proposed in RFC6675 Sec. 4, NextSeg()
Definition at line 828 of file tcp_input.c.
sack_scoreboard_hole_t* scoreboard_prev_hole | ( | sack_scoreboard_t * | sb, |
sack_scoreboard_hole_t * | hole | ||
) |
void tcp_api_reference | ( | void | ) |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
void tcp_bt_check_app_limited | ( | tcp_connection_t * | tc | ) |
void tcp_bt_cleanup | ( | tcp_connection_t * | tc | ) |
void tcp_bt_flush_samples | ( | tcp_connection_t * | tc | ) |
void tcp_bt_init | ( | tcp_connection_t * | tc | ) |
int tcp_bt_is_sane | ( | tcp_byte_tracker_t * | bt | ) |
void tcp_bt_sample_delivery_rate | ( | tcp_connection_t * | tc, |
tcp_rate_sample_t * | rs | ||
) |
void tcp_bt_track_rxt | ( | tcp_connection_t * | tc, |
u32 | start, | ||
u32 | end | ||
) |
void tcp_bt_track_tx | ( | tcp_connection_t * | tc | ) |
|
inlinestatic |
|
inlinestatic |
tcp_cc_algorithm_t* tcp_cc_algo_get | ( | tcp_cc_algorithm_type_e | type | ) |
tcp_cc_algorithm_type_e tcp_cc_algo_new_type | ( | const tcp_cc_algorithm_t * | vft | ) |
void tcp_cc_algo_register | ( | tcp_cc_algorithm_type_e | type, |
const tcp_cc_algorithm_t * | vft | ||
) |
|
inlinestatic |
|
inlinestatic |
void tcp_cc_fastrecovery_clear | ( | tcp_connection_t * | tc | ) |
void tcp_cc_init_congestion | ( | tcp_connection_t * | tc | ) |
Init loss recovery/fast recovery.
Triggered by dup acks as opposed to timer timeout. Note that cwnd is updated in tcp_cc_handle_event after fast retransmit
Definition at line 1171 of file tcp_input.c.
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
int tcp_configure_v4_source_address_range | ( | vlib_main_t * | vm, |
ip4_address_t * | start, | ||
ip4_address_t * | end, | ||
u32 | table_id | ||
) |
Configure an ipv4 source address range.
vm | vlib_main_t pointer |
start | first ipv4 address in the source address range |
end | last ipv4 address in the source address range |
table_id | VRF / table ID, 0 for the default FIB |
Definition at line 1687 of file tcp.c.
int tcp_configure_v6_source_address_range | ( | vlib_main_t * | vm, |
ip6_address_t * | start, | ||
ip6_address_t * | end, | ||
u32 | table_id | ||
) |
Configure an ipv6 source address range.
vm | vlib_main_t pointer |
start | first ipv6 address in the source address range |
end | last ipv6 address in the source address range |
table_id | VRF / table ID, 0 for the default FIB |
Definition at line 1775 of file tcp.c.
|
inlinestatic |
tcp_connection_t* tcp_connection_alloc | ( | u8 | thread_index | ) |
void tcp_connection_cleanup | ( | tcp_connection_t * | tc | ) |
void tcp_connection_close | ( | tcp_connection_t * | tc | ) |
Begin connection closing procedure.
If at the end the connection is not in CLOSED state, it is not removed. Instead, we rely on on TCP to advance through state machine to either 1) LAST_ACK (passive close) whereby when the last ACK is received tcp_connection_del is called. This notifies session of the delete and calls cleanup. 2) TIME_WAIT (active close) whereby after 2MSL the 2MSL timer triggers and cleanup is called.
N.B. Half-close connections are not supported
Definition at line 385 of file tcp.c.
void tcp_connection_del | ( | tcp_connection_t * | tc | ) |
Connection removal.
This should be called only once connection enters CLOSED state. Note that it notifies the session of the removal event, so if the goal is to just remove the connection, call tcp_connection_cleanup instead.
Definition at line 290 of file tcp.c.
void tcp_connection_free | ( | tcp_connection_t * | tc | ) |
|
inlinestatic |
|
inlinestatic |
void tcp_connection_init_vars | ( | tcp_connection_t * | tc | ) |
Initialize tcp connection variables.
Should be called after having received a msg from the peer, i.e., a SYN or a SYNACK, such that connection options have already been exchanged.
Definition at line 652 of file tcp.c.
void tcp_connection_reset | ( | tcp_connection_t * | tc | ) |
|
inlinestatic |
void tcp_connection_timers_init | ( | tcp_connection_t * | tc | ) |
void tcp_connection_timers_reset | ( | tcp_connection_t * | tc | ) |
void tcp_connection_tx_pacer_reset | ( | tcp_connection_t * | tc, |
u32 | window, | ||
u32 | start_bucket | ||
) |
void tcp_connection_tx_pacer_update | ( | tcp_connection_t * | tc | ) |
|
inlinestatic |
|
inlinestatic |
int tcp_fast_retransmit | ( | tcp_worker_ctx_t * | wrk, |
tcp_connection_t * | tc, | ||
u32 | burst_size | ||
) |
Do fast retransmit.
Definition at line 1985 of file tcp_output.c.
int tcp_fast_retransmit_no_sack | ( | tcp_worker_ctx_t * | wrk, |
tcp_connection_t * | tc, | ||
u32 | burst_size | ||
) |
Fast retransmit without SACK info.
Definition at line 1921 of file tcp_output.c.
int tcp_fast_retransmit_sack | ( | tcp_worker_ctx_t * | wrk, |
tcp_connection_t * | tc, | ||
u32 | burst_size | ||
) |
Do fast retransmit with SACKs.
Definition at line 1818 of file tcp_output.c.
|
inlinestatic |
void tcp_flush_frame_to_output | ( | tcp_worker_ctx_t * | wrk, |
u8 | is_ip4 | ||
) |
Flush tx frame populated by retransmits and timer pops.
Definition at line 988 of file tcp_output.c.
void tcp_flush_frames_to_output | ( | tcp_worker_ctx_t * | wrk | ) |
Flush v4 and v6 tcp and ip-lookup tx frames for thread index.
Definition at line 1019 of file tcp_output.c.
|
inlinestatic |
|
inlinestatic |
int tcp_half_open_connection_cleanup | ( | tcp_connection_t * | tc | ) |
Try to cleanup half-open connection.
If called from a thread that doesn't own tc, the call won't have any effect.
tc | - connection to be cleaned up |
Definition at line 211 of file tcp.c.
|
inlinestatic |
void tcp_init_mss | ( | tcp_connection_t * | tc | ) |
Definition at line 426 of file tcp_output.c.
void tcp_init_snd_vars | ( | tcp_connection_t * | tc | ) |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
fib_node_index_t tcp_lookup_rmt_in_fib | ( | tcp_connection_t * | tc | ) |
|
inlinestatic |
void tcp_make_fin | ( | tcp_connection_t * | tc, |
vlib_buffer_t * | b | ||
) |
Convert buffer to FIN-ACK.
Definition at line 525 of file tcp_output.c.
void tcp_make_synack | ( | tcp_connection_t * | ts, |
vlib_buffer_t * | b | ||
) |
Convert buffer to SYN-ACK.
Definition at line 559 of file tcp_output.c.
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
void tcp_program_ack | ( | tcp_connection_t * | tc | ) |
Definition at line 1189 of file tcp_output.c.
void tcp_program_dupack | ( | tcp_connection_t * | tc | ) |
Definition at line 1199 of file tcp_output.c.
void tcp_program_fastretransmit | ( | tcp_connection_t * | tc | ) |
Definition at line 1211 of file tcp_output.c.
void tcp_punt_unknown | ( | vlib_main_t * | vm, |
u8 | is_ip4, | ||
u8 | is_add | ||
) |
void tcp_rcv_sacks | ( | tcp_connection_t * | tc, |
u32 | ack | ||
) |
Definition at line 945 of file tcp_input.c.
int tcp_retransmit_first_unacked | ( | tcp_worker_ctx_t * | wrk, |
tcp_connection_t * | tc | ||
) |
Retransmit first unacked segment.
Definition at line 1761 of file tcp_output.c.
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
u32 tcp_sack_list_bytes | ( | tcp_connection_t * | tc | ) |
u8* tcp_scoreboard_replay | ( | u8 * | s, |
tcp_connection_t * | tc, | ||
u8 | verbose | ||
) |
void tcp_send_fin | ( | tcp_connection_t * | tc | ) |
Send FIN.
Definition at line 1031 of file tcp_output.c.
void tcp_send_reset | ( | tcp_connection_t * | tc | ) |
Build and set reset packet for connection.
Definition at line 846 of file tcp_output.c.
void tcp_send_reset_w_pkt | ( | tcp_connection_t * | tc, |
vlib_buffer_t * | pkt, | ||
u32 | thread_index, | ||
u8 | is_ip4 | ||
) |
Send reset without reusing existing buffer.
It extracts connection info out of original packet
Definition at line 764 of file tcp_output.c.
void tcp_send_syn | ( | tcp_connection_t * | tc | ) |
Send SYN.
Builds a SYN packet for a half-open connection and sends it to ipx_lookup. The packet is not forwarded through tcpx_output to avoid doing lookups in the half_open pool.
Definition at line 926 of file tcp_output.c.
void tcp_send_synack | ( | tcp_connection_t * | tc | ) |
Definition at line 961 of file tcp_output.c.
void tcp_send_window_update_ack | ( | tcp_connection_t * | tc | ) |
Send Window Update ACK, ensuring that it will be sent once, if RWND became non-zero, after zero RWND has been advertised in ACK before.
Definition at line 1242 of file tcp_output.c.
int tcp_session_custom_tx | ( | void * | conn, |
u32 | max_burst_size | ||
) |
Definition at line 2066 of file tcp_output.c.
u32 tcp_session_push_header | ( | transport_connection_t * | tconn, |
vlib_buffer_t * | b | ||
) |
Definition at line 1138 of file tcp_output.c.
|
inlinestatic |
u32 tcp_snd_space | ( | tcp_connection_t * | tc | ) |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
void tcp_update_burst_snd_vars | ( | tcp_connection_t * | tc | ) |
Update burst send vars.
This should only be called when doing bursts
Definition at line 400 of file tcp_output.c.
void tcp_update_rto | ( | tcp_connection_t * | tc | ) |
void tcp_update_sack_list | ( | tcp_connection_t * | tc, |
u32 | start, | ||
u32 | end | ||
) |
Build SACK list as per RFC2018.
Makes sure the first block contains the segment that generated the current ACK and the following ones are the ones most recently reported in SACK blocks.
tc | TCP connection for which the SACK list is updated |
start | Start sequence number of the newest SACK block |
end | End sequence of the newest SACK block |
Definition at line 1683 of file tcp_input.c.
|
inlinestatic |
Push TCP header to buffer.
b | - buffer to write the header to |
sp_net | - source port net order |
dp_net | - destination port net order |
seq | - sequence number host order |
ack | - ack number host order |
tcp_hdr_opts_len | - header and options length in bytes |
flags | - header flags |
wnd | - window size |
Definition at line 1237 of file tcp.h.
|
inlinestatic |
Push TCP header to buffer.
vm | - vlib_main |
b | - buffer to write the header to |
sp_net | - source port net order |
dp_net | - destination port net order |
seq | - sequence number net order |
ack | - ack number net order |
tcp_hdr_opts_len | - header and options length in bytes |
flags | - header flags |
wnd | - window size |
Definition at line 1202 of file tcp.h.
|
inlinestatic |
clib_error_t* vnet_tcp_enable_disable | ( | vlib_main_t * | vm, |
u8 | is_en | ||
) |
format_function_t format_tcp_flags |
format_function_t format_tcp_rcv_sacks |
format_function_t format_tcp_sacks |
format_function_t format_tcp_state |
vlib_node_registration_t tcp4_established_node |
(constructor) VLIB_REGISTER_NODE (tcp4_established_node)
Definition at line 2184 of file tcp_input.c.
vlib_node_registration_t tcp4_input_node |
(constructor) VLIB_REGISTER_NODE (tcp4_input_node)
Definition at line 3610 of file tcp_input.c.
vlib_node_registration_t tcp4_listen_node |
(constructor) VLIB_REGISTER_NODE (tcp4_listen_node)
Definition at line 3197 of file tcp_input.c.
vlib_node_registration_t tcp4_output_node |
(constructor) VLIB_REGISTER_NODE (tcp4_output_node)
Definition at line 2305 of file tcp_output.c.
vlib_node_registration_t tcp4_rcv_process_node |
(constructor) VLIB_REGISTER_NODE (tcp4_rcv_process_node)
Definition at line 2995 of file tcp_input.c.
vlib_node_registration_t tcp4_syn_sent_node |
(constructor) VLIB_REGISTER_NODE (tcp4_syn_sent_node)
Definition at line 2569 of file tcp_input.c.
vlib_node_registration_t tcp6_established_node |
(constructor) VLIB_REGISTER_NODE (tcp6_established_node)
Definition at line 2203 of file tcp_input.c.
vlib_node_registration_t tcp6_input_node |
(constructor) VLIB_REGISTER_NODE (tcp6_input_node)
Definition at line 3630 of file tcp_input.c.
vlib_node_registration_t tcp6_listen_node |
(constructor) VLIB_REGISTER_NODE (tcp6_listen_node)
Definition at line 3216 of file tcp_input.c.
vlib_node_registration_t tcp6_output_node |
(constructor) VLIB_REGISTER_NODE (tcp6_output_node)
Definition at line 2325 of file tcp_output.c.
vlib_node_registration_t tcp6_rcv_process_node |
(constructor) VLIB_REGISTER_NODE (tcp6_rcv_process_node)
Definition at line 3014 of file tcp_input.c.
vlib_node_registration_t tcp6_syn_sent_node |
(constructor) VLIB_REGISTER_NODE (tcp6_syn_sent_node)
Definition at line 2588 of file tcp_input.c.
tcp_main_t tcp_main |
timer_expiration_handler tcp_timer_delack_handler |
timer_expiration_handler tcp_timer_persist_handler |
timer_expiration_handler tcp_timer_retransmit_handler |
timer_expiration_handler tcp_timer_retransmit_syn_handler |