FD.io VPP
v21.06-3-gbb25fbf28
Vector Packet Processing
|
Go to the source code of this file.
Data Structures | |
struct | tcp_wrk_stats_ |
struct | tcp_free_req_ |
struct | tcp_worker_ctx_ |
struct | tcp_iss_seed_ |
struct | tcp_configuration_ |
Macros | |
#define | tcp_error(n, s) TCP_ERROR_##n, |
#define | foreach_tcp_wrk_stat |
#define | tcp_worker_stats_inc(_wrk, _stat, _val) _wrk->stats._stat += _val |
#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_validate_txf_size(_tc, _a) |
Typedefs | |
typedef void() | timer_expiration_handler(tcp_connection_t *tc) |
typedef enum _tcp_error | tcp_error_t |
typedef struct _tcp_lookup_dispatch | tcp_lookup_dispatch_t |
typedef struct tcp_wrk_stats_ | tcp_wrk_stats_t |
typedef struct tcp_free_req_ | tcp_cleanup_req_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 |
#define foreach_tcp_wrk_stat |
#define tcp_node_index | ( | node_id, | |
is_ip4 | |||
) | ((is_ip4) ? tcp4_##node_id##_node.index : tcp6_##node_id##_node.index) |
#define tcp_validate_txf_size | ( | _tc, | |
_a | |||
) |
#define tcp_worker_stats_inc | ( | _wrk, | |
_stat, | |||
_val | |||
) | _wrk->stats._stat += _val |
typedef struct tcp_free_req_ tcp_cleanup_req_t |
typedef struct tcp_configuration_ tcp_configuration_t |
typedef enum _tcp_error tcp_error_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_worker_ctx_ tcp_worker_ctx_t |
typedef struct tcp_wrk_stats_ tcp_wrk_stats_t |
typedef void() timer_expiration_handler(tcp_connection_t *tc) |
void tcp_check_gso | ( | tcp_connection_t * | tc | ) |
Definition at line 3091 of file tcp_input.c.
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 376 of file tcp_cli.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 463 of file tcp_cli.c.
tcp_connection_t* tcp_connection_alloc | ( | u8 | thread_index | ) |
tcp_connection_t* tcp_connection_alloc_w_base | ( | u8 | thread_index, |
tcp_connection_t * | base | ||
) |
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.
Definition at line 357 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 287 of file tcp.c.
void tcp_connection_free | ( | tcp_connection_t * | tc | ) |
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 725 of file tcp.c.
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 | ) |
int tcp_fastrecovery_prr_snd_space | ( | tcp_connection_t * | tc | ) |
Estimate send space using proportional rate reduction (RFC6937)
Definition at line 1655 of file tcp_output.c.
|
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 207 of file tcp.c.
void tcp_init_snd_vars | ( | tcp_connection_t * | tc | ) |
fib_node_index_t tcp_lookup_rmt_in_fib | ( | tcp_connection_t * | tc | ) |
void tcp_program_ack | ( | tcp_connection_t * | tc | ) |
Definition at line 1041 of file tcp_output.c.
void tcp_program_cleanup | ( | tcp_worker_ctx_t * | wrk, |
tcp_connection_t * | tc | ||
) |
void tcp_program_dupack | ( | tcp_connection_t * | tc | ) |
Definition at line 1051 of file tcp_output.c.
void tcp_program_retransmit | ( | tcp_connection_t * | tc | ) |
Definition at line 1063 of file tcp_output.c.
void tcp_punt_unknown | ( | vlib_main_t * | vm, |
u8 | is_ip4, | ||
u8 | is_add | ||
) |
void tcp_reschedule | ( | tcp_connection_t * | tc | ) |
void tcp_send_ack | ( | tcp_connection_t * | tc | ) |
Definition at line 1021 of file tcp_output.c.
void tcp_send_fin | ( | tcp_connection_t * | tc | ) |
Send FIN.
Definition at line 872 of file tcp_output.c.
void tcp_send_reset | ( | tcp_connection_t * | tc | ) |
Build and set reset packet for connection.
Definition at line 748 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 660 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 807 of file tcp_output.c.
void tcp_send_synack | ( | tcp_connection_t * | tc | ) |
Definition at line 843 of file tcp_output.c.
void tcp_send_window_update_ack | ( | tcp_connection_t * | tc | ) |
Send window update ack.
Ensures that it will be sent only once, after a zero rwnd has been advertised in a previous ack, and only if rwnd has grown beyond a configurable value.
Definition at line 1080 of file tcp_output.c.
int tcp_session_custom_tx | ( | void * | conn, |
transport_send_params_t * | sp | ||
) |
u32 tcp_session_push_header | ( | transport_connection_t * | tconn, |
vlib_buffer_t * | b | ||
) |
u32 tcp_snd_space | ( | tcp_connection_t * | tc | ) |
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 300 of file tcp_output.c.
|
inlinestatic |
clib_error_t* vnet_tcp_enable_disable | ( | vlib_main_t * | vm, |
u8 | is_en | ||
) |
format_function_t format_tcp_connection |
format_function_t format_tcp_connection_id |
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 1572 of file tcp_input.c.
vlib_node_registration_t tcp4_input_node |
(constructor) VLIB_REGISTER_NODE (tcp4_input_node)
Definition at line 3050 of file tcp_input.c.
vlib_node_registration_t tcp4_listen_node |
(constructor) VLIB_REGISTER_NODE (tcp4_listen_node)
Definition at line 2722 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 2532 of file tcp_input.c.
vlib_node_registration_t tcp4_syn_sent_node |
(constructor) VLIB_REGISTER_NODE (tcp4_syn_sent_node)
Definition at line 2067 of file tcp_input.c.
vlib_node_registration_t tcp6_established_node |
(constructor) VLIB_REGISTER_NODE (tcp6_established_node)
Definition at line 1591 of file tcp_input.c.
vlib_node_registration_t tcp6_input_node |
(constructor) VLIB_REGISTER_NODE (tcp6_input_node)
Definition at line 3070 of file tcp_input.c.
vlib_node_registration_t tcp6_listen_node |
(constructor) VLIB_REGISTER_NODE (tcp6_listen_node)
Definition at line 2741 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 2551 of file tcp_input.c.
vlib_node_registration_t tcp6_syn_sent_node |
(constructor) VLIB_REGISTER_NODE (tcp6_syn_sent_node)
Definition at line 2086 of file tcp_input.c.
tcp_main_t tcp_main |
timer_expiration_handler tcp_timer_persist_handler |
timer_expiration_handler tcp_timer_retransmit_handler |
timer_expiration_handler tcp_timer_retransmit_syn_handler |