refactor: IP reassembly and rename stat name

This commit is contained in:
luwenpeng
2024-08-19 16:15:08 +08:00
parent bf2de263cf
commit 28f50b922b
6 changed files with 572 additions and 524 deletions

View File

@@ -48,28 +48,34 @@ enum METRIC_TYPE
METRIC_TYPE_CTRL_BYTES_TX,
// ipv4 reassembly
METRIC_TYPE_IP4_FLOW_FIND,
METRIC_TYPE_IP4_FLOW_ADD,
METRIC_TYPE_IP4_FLOW_DEL,
METRIC_TYPE_IP4_FLOW_TIMEOUT,
METRIC_TYPE_IP4_FLOW_FAIL_NO_SPACE,
METRIC_TYPE_IP4_FLOW_FAIL_OVERLAP,
METRIC_TYPE_IP4_FLOW_FAIL_MANY_FRAG,
METRIC_TYPE_IP4_FLOW_FAIL_INVALID_LENGTH,
METRIC_TYPE_IP4_FLOW_BYPASS_DUP_FIST_FRAG,
METRIC_TYPE_IP4_FLOW_BYPASS_DUP_LAST_FRAG,
METRIC_TYPE_IP4_DEFRAGS_EXPECTED,
METRIC_TYPE_IP4_DEFRAGS_SUCCEED,
METRIC_TYPE_IP4_DEFRAGS_FAILED_TIMEOUT,
METRIC_TYPE_IP4_DEFRAGS_FAILED_INVALID_LENGTH,
METRIC_TYPE_IP4_DEFRAGS_FAILED_OVERLAP,
METRIC_TYPE_IP4_DEFRAGS_FAILED_TOO_MANY_FRAG,
METRIC_TYPE_IP4_FRAGS,
METRIC_TYPE_IP4_FRAGS_FREED,
METRIC_TYPE_IP4_FRAGS_BUFFERED,
METRIC_TYPE_IP4_FRAGS_BYPASS_NO_BUFFER,
METRIC_TYPE_IP4_FRAGS_BYPASS_DUP_FIST_FRAG,
METRIC_TYPE_IP4_FRAGS_BYPASS_DUP_LAST_FRAG,
// ipv6 reassembly
METRIC_TYPE_IP6_FLOW_FIND,
METRIC_TYPE_IP6_FLOW_ADD,
METRIC_TYPE_IP6_FLOW_DEL,
METRIC_TYPE_IP6_FLOW_TIMEOUT,
METRIC_TYPE_IP6_FLOW_FAIL_NO_SPACE,
METRIC_TYPE_IP6_FLOW_FAIL_OVERLAP,
METRIC_TYPE_IP6_FLOW_FAIL_MANY_FRAG,
METRIC_TYPE_IP6_FLOW_FAIL_INVALID_LENGTH,
METRIC_TYPE_IP6_FLOW_BYPASS_DUP_FIST_FRAG,
METRIC_TYPE_IP6_FLOW_BYPASS_DUP_LAST_FRAG,
METRIC_TYPE_IP6_DEFRAGS_EXPECTED,
METRIC_TYPE_IP6_DEFRAGS_SUCCEED,
METRIC_TYPE_IP6_DEFRAGS_FAILED_TIMEOUT,
METRIC_TYPE_IP6_DEFRAGS_FAILED_INVALID_LENGTH,
METRIC_TYPE_IP6_DEFRAGS_FAILED_OVERLAP,
METRIC_TYPE_IP6_DEFRAGS_FAILED_TOO_MANY_FRAG,
METRIC_TYPE_IP6_FRAGS,
METRIC_TYPE_IP6_FRAGS_FREED,
METRIC_TYPE_IP6_FRAGS_BUFFERED,
METRIC_TYPE_IP6_FRAGS_BYPASS_NO_BUFFER,
METRIC_TYPE_IP6_FRAGS_BYPASS_DUP_FIST_FRAG,
METRIC_TYPE_IP6_FRAGS_BYPASS_DUP_LAST_FRAG,
// TCP session
METRIC_TYPE_HISTORY_TCP_SESSIONS,
@@ -148,30 +154,34 @@ const char *name[] = {
"ctrl_bytes_tx",
// ipv4 reassembly
// TODO rename
"ip4_flow_find",
"ip4_flow_add",
"ip4_flow_del",
"ip4_flow_timeout",
"ip4_flow_fail_no_space",
"ip4_flow_fail_overlap",
"ip4_flow_fail_many_frag",
"ip4_flow_fail_invalid_length",
"ip4_flow_bypass_dup_fist_frag",
"ip4_flow_bypass_dup_last_frag",
"ip4_defrags_expected",
"ip4_defrags_succeed",
"ip4_defrags_failed_timeout",
"ip4_defrags_failed_invalid_length",
"ip4_defrags_failed_overlap",
"ip4_defrags_failed_too_many_frag",
"ip4_frags",
"ip4_frags_freed",
"ip4_frags_buffered",
"ip4_frags_bypass_no_buffer",
"ip4_frags_bypass_dup_fist_frag",
"ip4_frags_bypass_dup_last_frag",
// ipv6 reassembly
// TODO rename
"ip6_flow_find",
"ip6_flow_add",
"ip6_flow_del",
"ip6_flow_timeout",
"ip6_flow_fail_no_space",
"ip6_flow_fail_overlap",
"ip6_flow_fail_many_frag",
"ip6_flow_fail_invalid_length",
"ip6_flow_bypass_dup_fist_frag",
"ip6_flow_bypass_dup_last_frag",
"ip6_defrags_expected",
"ip6_defrags_succeed",
"ip6_defrags_failed_timeout",
"ip6_defrags_failed_invalid_length",
"ip6_defrags_failed_overlap",
"ip6_defrags_failed_too_many_frag",
"ip6_frags",
"ip6_frags_freed",
"ip6_frags_buffered",
"ip6_frags_bypass_no_buffer",
"ip6_frags_bypass_dup_fist_frag",
"ip6_frags_bypass_dup_last_frag",
// TCP session
"history_tcp_sessions",
@@ -365,66 +375,78 @@ void stellar_stat_output(struct stellar_stat *stat)
stat->metric_val[j] += thr_stat->packet_io->ctrl_bytes_tx;
break;
// ipv4 reassembly
case METRIC_TYPE_IP4_FLOW_FIND:
stat->metric_val[j] += thr_stat->ip_reassembly->ip4_flow_find;
case METRIC_TYPE_IP4_DEFRAGS_EXPECTED:
stat->metric_val[j] += thr_stat->ip_reassembly->ip4_defrags_expected;
break;
case METRIC_TYPE_IP4_FLOW_ADD:
stat->metric_val[j] += thr_stat->ip_reassembly->ip4_flow_add;
case METRIC_TYPE_IP4_DEFRAGS_SUCCEED:
stat->metric_val[j] += thr_stat->ip_reassembly->ip4_defrags_succeed;
break;
case METRIC_TYPE_IP4_FLOW_DEL:
stat->metric_val[j] += thr_stat->ip_reassembly->ip4_flow_del;
case METRIC_TYPE_IP4_DEFRAGS_FAILED_TIMEOUT:
stat->metric_val[j] += thr_stat->ip_reassembly->ip4_defrags_failed_timeout;
break;
case METRIC_TYPE_IP4_FLOW_TIMEOUT:
stat->metric_val[j] += thr_stat->ip_reassembly->ip4_flow_timeout;
case METRIC_TYPE_IP4_DEFRAGS_FAILED_INVALID_LENGTH:
stat->metric_val[j] += thr_stat->ip_reassembly->ip4_defrags_failed_invalid_length;
break;
case METRIC_TYPE_IP4_FLOW_FAIL_NO_SPACE:
stat->metric_val[j] += thr_stat->ip_reassembly->ip4_flow_fail_no_space;
case METRIC_TYPE_IP4_DEFRAGS_FAILED_OVERLAP:
stat->metric_val[j] += thr_stat->ip_reassembly->ip4_defrags_failed_overlap;
break;
case METRIC_TYPE_IP4_FLOW_FAIL_OVERLAP:
stat->metric_val[j] += thr_stat->ip_reassembly->ip4_flow_fail_overlap;
case METRIC_TYPE_IP4_DEFRAGS_FAILED_TOO_MANY_FRAG:
stat->metric_val[j] += thr_stat->ip_reassembly->ip4_defrags_failed_too_many_frag;
break;
case METRIC_TYPE_IP4_FLOW_FAIL_MANY_FRAG:
stat->metric_val[j] += thr_stat->ip_reassembly->ip4_flow_fail_many_frag;
case METRIC_TYPE_IP4_FRAGS:
stat->metric_val[j] += thr_stat->ip_reassembly->ip4_frags;
break;
case METRIC_TYPE_IP4_FLOW_FAIL_INVALID_LENGTH:
stat->metric_val[j] += thr_stat->ip_reassembly->ip4_flow_fail_invalid_length;
case METRIC_TYPE_IP4_FRAGS_FREED:
stat->metric_val[j] += thr_stat->ip_reassembly->ip4_frags_freed;
break;
case METRIC_TYPE_IP4_FLOW_BYPASS_DUP_FIST_FRAG:
stat->metric_val[j] += thr_stat->ip_reassembly->ip4_flow_bypass_dup_fist_frag;
case METRIC_TYPE_IP4_FRAGS_BUFFERED:
stat->metric_val[j] += thr_stat->ip_reassembly->ip4_frags_buffered;
break;
case METRIC_TYPE_IP4_FLOW_BYPASS_DUP_LAST_FRAG:
stat->metric_val[j] += thr_stat->ip_reassembly->ip4_flow_bypass_dup_last_frag;
case METRIC_TYPE_IP4_FRAGS_BYPASS_NO_BUFFER:
stat->metric_val[j] += thr_stat->ip_reassembly->ip4_frags_bypass_no_buffer;
break;
case METRIC_TYPE_IP4_FRAGS_BYPASS_DUP_FIST_FRAG:
stat->metric_val[j] += thr_stat->ip_reassembly->ip4_frags_bypass_dup_fist_frag;
break;
case METRIC_TYPE_IP4_FRAGS_BYPASS_DUP_LAST_FRAG:
stat->metric_val[j] += thr_stat->ip_reassembly->ip4_frags_bypass_dup_last_frag;
break;
// ipv6 reassembly
case METRIC_TYPE_IP6_FLOW_FIND:
stat->metric_val[j] += thr_stat->ip_reassembly->ip6_flow_find;
case METRIC_TYPE_IP6_DEFRAGS_EXPECTED:
stat->metric_val[j] += thr_stat->ip_reassembly->ip6_defrags_expected;
break;
case METRIC_TYPE_IP6_FLOW_ADD:
stat->metric_val[j] += thr_stat->ip_reassembly->ip6_flow_add;
case METRIC_TYPE_IP6_DEFRAGS_SUCCEED:
stat->metric_val[j] += thr_stat->ip_reassembly->ip6_defrags_succeed;
break;
case METRIC_TYPE_IP6_FLOW_DEL:
stat->metric_val[j] += thr_stat->ip_reassembly->ip6_flow_del;
case METRIC_TYPE_IP6_DEFRAGS_FAILED_TIMEOUT:
stat->metric_val[j] += thr_stat->ip_reassembly->ip6_defrags_failed_timeout;
break;
case METRIC_TYPE_IP6_FLOW_TIMEOUT:
stat->metric_val[j] += thr_stat->ip_reassembly->ip6_flow_timeout;
case METRIC_TYPE_IP6_DEFRAGS_FAILED_INVALID_LENGTH:
stat->metric_val[j] += thr_stat->ip_reassembly->ip6_defrags_failed_invalid_length;
break;
case METRIC_TYPE_IP6_FLOW_FAIL_NO_SPACE:
stat->metric_val[j] += thr_stat->ip_reassembly->ip6_flow_fail_no_space;
case METRIC_TYPE_IP6_DEFRAGS_FAILED_OVERLAP:
stat->metric_val[j] += thr_stat->ip_reassembly->ip6_defrags_failed_overlap;
break;
case METRIC_TYPE_IP6_FLOW_FAIL_OVERLAP:
stat->metric_val[j] += thr_stat->ip_reassembly->ip6_flow_fail_overlap;
case METRIC_TYPE_IP6_DEFRAGS_FAILED_TOO_MANY_FRAG:
stat->metric_val[j] += thr_stat->ip_reassembly->ip6_defrags_failed_too_many_frag;
break;
case METRIC_TYPE_IP6_FLOW_FAIL_MANY_FRAG:
stat->metric_val[j] += thr_stat->ip_reassembly->ip6_flow_fail_many_frag;
case METRIC_TYPE_IP6_FRAGS:
stat->metric_val[j] += thr_stat->ip_reassembly->ip6_frags;
break;
case METRIC_TYPE_IP6_FLOW_FAIL_INVALID_LENGTH:
stat->metric_val[j] += thr_stat->ip_reassembly->ip6_flow_fail_invalid_length;
case METRIC_TYPE_IP6_FRAGS_FREED:
stat->metric_val[j] += thr_stat->ip_reassembly->ip6_frags_freed;
break;
case METRIC_TYPE_IP6_FLOW_BYPASS_DUP_FIST_FRAG:
stat->metric_val[j] += thr_stat->ip_reassembly->ip6_flow_bypass_dup_fist_frag;
case METRIC_TYPE_IP6_FRAGS_BUFFERED:
stat->metric_val[j] += thr_stat->ip_reassembly->ip6_frags_buffered;
break;
case METRIC_TYPE_IP6_FLOW_BYPASS_DUP_LAST_FRAG:
stat->metric_val[j] += thr_stat->ip_reassembly->ip6_flow_bypass_dup_last_frag;
case METRIC_TYPE_IP6_FRAGS_BYPASS_NO_BUFFER:
stat->metric_val[j] += thr_stat->ip_reassembly->ip6_frags_bypass_no_buffer;
break;
case METRIC_TYPE_IP6_FRAGS_BYPASS_DUP_FIST_FRAG:
stat->metric_val[j] += thr_stat->ip_reassembly->ip6_frags_bypass_dup_fist_frag;
break;
case METRIC_TYPE_IP6_FRAGS_BYPASS_DUP_LAST_FRAG:
stat->metric_val[j] += thr_stat->ip_reassembly->ip6_frags_bypass_dup_last_frag;
break;
// TCP session
case METRIC_TYPE_HISTORY_TCP_SESSIONS: