TSG-13938 tsg-service-chaining-engine区分mirror和steering并更新fieldstat计数

This commit is contained in:
luwenpeng
2023-02-27 14:37:31 +08:00
parent 586fb056a6
commit 92af3e1fee
5 changed files with 226 additions and 55 deletions

View File

@@ -62,8 +62,10 @@ enum SCE_STAT_FIELD
STAT_CURRENT_SESSION_NUMS,
// keepalive packet
STAT_KEEPALIVE_RX_PKT,
STAT_KEEPALIVE_RX_B,
STAT_DOWNLINK_KEEPALIVE_RX_PKT,
STAT_DOWNLINK_KEEPALIVE_RX_B,
STAT_UPLINK_KEEPALIVE_RX_PKT,
STAT_UPLINK_KEEPALIVE_RX_B,
// health check
STAT_SF_ACTIVE_TIMES,
@@ -114,8 +116,8 @@ static const char *stat_map[] =
// mirroring
[STAT_MIRRORING_TX_PKT] = "mirr_tx_pkt",
[STAT_MIRRORING_TX_B] = "mirr_tx_B",
[STAT_MIRRORING_RX_DROP_PKT] = "mirr_rx_drop_pkt",
[STAT_MIRRORING_RX_DROP_B] = "mirro_rx_drop_B",
[STAT_MIRRORING_RX_DROP_PKT] = "mirr_rx_dop_pkt",
[STAT_MIRRORING_RX_DROP_B] = "mirr_rx_dop_B",
// control packet
[STAT_CONTROL_RX_PKT] = "ctrl_rx_pkt",
@@ -131,14 +133,16 @@ static const char *stat_map[] =
[STAT_CURRENT_SESSION_NUMS] = "curr_sess_num",
// keepalive packet
[STAT_KEEPALIVE_RX_PKT] = "kepalive_rx_pkt",
[STAT_KEEPALIVE_RX_B] = "kepalive_rx_B",
[STAT_DOWNLINK_KEEPALIVE_RX_PKT] = "dlnk_kep_rx_pkt",
[STAT_DOWNLINK_KEEPALIVE_RX_B] = "dlnk_kep_rx_B",
[STAT_UPLINK_KEEPALIVE_RX_PKT] = "ulnk_kep_rx_pkt",
[STAT_UPLINK_KEEPALIVE_RX_B] = "ulnk_kep_rx_B",
// health check
[STAT_SF_ACTIVE_TIMES] = "sf_active_num",
[STAT_SF_INACTIVE_TIMES] = "sf_inactive_num",
[STAT_SF_MAC_EXIST_TIMES] = "sf_mac_succ_num",
[STAT_SF_MAC_NOEXIST_TIMES] = "sf_mac_err_num",
[STAT_SF_ACTIVE_TIMES] = "sf_active",
[STAT_SF_INACTIVE_TIMES] = "sf_inactive",
[STAT_SF_MAC_EXIST_TIMES] = "sf_mac_succ",
[STAT_SF_MAC_NOEXIST_TIMES] = "sf_mac_err",
[STAT_MAX] = NULL};
@@ -196,6 +200,13 @@ struct global_metrics *global_metrics_create(const char *profile)
FS_set_para(metrics->fs_handle, STATS_FORMAT, &metrics->config.statsd_format, sizeof(metrics->config.statsd_format));
}
if (STAT_MAX >= (sizeof(metrics->fs_id) / sizeof(metrics->fs_id[0])))
{
LOG_ERROR("%s: field stat has insufficient space to store fs_id, and supports a maximum of %lu fsids, but %d is needed ", LOG_TAG_METRICS, (sizeof(metrics->fs_id) / sizeof(metrics->fs_id[0])), STAT_MAX);
global_metrics_destory(metrics);
return NULL;
}
for (int i = 0; i < STAT_MAX; i++)
{
metrics->fs_id[i] = FS_register(metrics->fs_handle, FS_STYLE_FIELD, FS_CALC_CURRENT, stat_map[i]);
@@ -261,8 +272,10 @@ void global_metrics_dump(struct global_metrics *metrics)
FS_operate(metrics->fs_handle, metrics->fs_id[STAT_MIRRORING_RX_DROP_B], 0, FS_OP_SET, __atomic_fetch_add(&(metrics->mirroring_rx_drop.n_bytes), 0, __ATOMIC_RELAXED));
// keepalive packet
FS_operate(metrics->fs_handle, metrics->fs_id[STAT_KEEPALIVE_RX_PKT], 0, FS_OP_SET, __atomic_fetch_add(&(metrics->keepalive_packet_rx.n_pkts), 0, __ATOMIC_RELAXED));
FS_operate(metrics->fs_handle, metrics->fs_id[STAT_KEEPALIVE_RX_B], 0, FS_OP_SET, __atomic_fetch_add(&(metrics->keepalive_packet_rx.n_bytes), 0, __ATOMIC_RELAXED));
FS_operate(metrics->fs_handle, metrics->fs_id[STAT_DOWNLINK_KEEPALIVE_RX_PKT], 0, FS_OP_SET, __atomic_fetch_add(&(metrics->downlink_keepalive_packet_rx.n_pkts), 0, __ATOMIC_RELAXED));
FS_operate(metrics->fs_handle, metrics->fs_id[STAT_DOWNLINK_KEEPALIVE_RX_B], 0, FS_OP_SET, __atomic_fetch_add(&(metrics->downlink_keepalive_packet_rx.n_bytes), 0, __ATOMIC_RELAXED));
FS_operate(metrics->fs_handle, metrics->fs_id[STAT_UPLINK_KEEPALIVE_RX_PKT], 0, FS_OP_SET, __atomic_fetch_add(&(metrics->uplink_keepalive_packet_rx.n_pkts), 0, __ATOMIC_RELAXED));
FS_operate(metrics->fs_handle, metrics->fs_id[STAT_UPLINK_KEEPALIVE_RX_B], 0, FS_OP_SET, __atomic_fetch_add(&(metrics->uplink_keepalive_packet_rx.n_bytes), 0, __ATOMIC_RELAXED));
// control packet
FS_operate(metrics->fs_handle, metrics->fs_id[STAT_CONTROL_RX_PKT], 0, FS_OP_SET, __atomic_fetch_add(&(metrics->control_packet_rx.n_pkts), 0, __ATOMIC_RELAXED));