TSG-13196 Decrypted Traffic Steering增加FieldStat字段

* stee_ssl_conn
    * stee_http_conn
    * stee_c_tx_B
    * stee_s_rx_B
    * stee_s_tx_B
    * stee_c_rx_B
This commit is contained in:
luwenpeng
2022-12-29 10:24:02 +08:00
parent 3268648414
commit 0f542d376f
3 changed files with 35 additions and 4 deletions

View File

@@ -39,6 +39,19 @@ enum TFE_STAT_FIELD
/* Protocol */ /* Protocol */
STAT_STREAM_TCP_PLAIN, STAT_STREAM_TCP_PLAIN,
STAT_STREAM_TCP_SSL, STAT_STREAM_TCP_SSL,
/* Decrypted Traffic Steering */
STAT_STEERING_SSL_CONN,
STAT_STEERING_HTTP_CONN,
STAT_STEERING_CLIENT_TX_B,
STAT_STEERING_SERVER_RX_B,
STAT_STEERING_SERVER_TX_B,
STAT_STEERING_CLIENT_RX_B,
STAT_STEERING_CLIENT_ERR,
STAT_STEERING_SERVER_ERR,
STAT_STEERING_CLIENT_EOF,
STAT_STEERING_SERVER_EOF,
TFE_STAT_MAX TFE_STAT_MAX
}; };

View File

@@ -461,6 +461,18 @@ static const char * __str_stat_spec_map[] =
[STAT_STREAM_INCPT_UP_BYTES] = "ustm_incpt_B", [STAT_STREAM_INCPT_UP_BYTES] = "ustm_incpt_B",
[STAT_STREAM_TCP_PLAIN] = "plain", [STAT_STREAM_TCP_PLAIN] = "plain",
[STAT_STREAM_TCP_SSL] = "ssl", [STAT_STREAM_TCP_SSL] = "ssl",
[STAT_STEERING_SSL_CONN] = "stee_ssl_conn",
[STAT_STEERING_HTTP_CONN] = "stee_http_conn",
[STAT_STEERING_CLIENT_TX_B] = "stee_c_tx_B",
[STAT_STEERING_SERVER_RX_B] = "stee_s_rx_B",
[STAT_STEERING_SERVER_TX_B] = "stee_s_tx_B",
[STAT_STEERING_CLIENT_RX_B] = "stee_c_rx_B",
[STAT_STEERING_CLIENT_ERR] = "stee_c_err",
[STAT_STEERING_SERVER_ERR] = "stee_s_err",
[STAT_STEERING_CLIENT_EOF] = "stee_c_eof",
[STAT_STEERING_SERVER_EOF] = "stee_s_eof",
[TFE_STAT_MAX] = NULL [TFE_STAT_MAX] = NULL
}; };

View File

@@ -602,13 +602,16 @@ static void __stream_bev_readcb(struct bufferevent * bev, void * arg)
(STREAM_PROTO_PLAIN == _stream->session_type && _stream->proxy_ref->traffic_steering_options.enable_steering_http) || (STREAM_PROTO_PLAIN == _stream->session_type && _stream->proxy_ref->traffic_steering_options.enable_steering_http) ||
(STREAM_PROTO_SSL == _stream->session_type &&_stream->proxy_ref->traffic_steering_options.enable_steering_ssl))) (STREAM_PROTO_SSL == _stream->session_type &&_stream->proxy_ref->traffic_steering_options.enable_steering_ssl)))
{ {
enum TFE_STAT_FIELD stat_filed = TFE_STAT_MAX;
if (bev == _stream->conn_downstream->bev) if (bev == _stream->conn_downstream->bev)
{ {
peer_conn = _stream->conn_fake_c; peer_conn = _stream->conn_fake_c;
stat_filed = STAT_STEERING_CLIENT_TX_B;
} }
else if (bev == _stream->conn_upstream->bev) else if (bev == _stream->conn_upstream->bev)
{ {
peer_conn = _stream->conn_fake_s; peer_conn = _stream->conn_fake_s;
stat_filed = STAT_STEERING_SERVER_TX_B;
} }
else else
{ {
@@ -626,14 +629,13 @@ static void __stream_bev_readcb(struct bufferevent * bev, void * arg)
return; return;
} }
// TODO 增加计数
TFE_LOG_DEBUG(__STREAM_LOGGER(_stream), "decrypted traffic steering, %s send %d bytes from %s to %s", TFE_LOG_DEBUG(__STREAM_LOGGER(_stream), "decrypted traffic steering, %s send %d bytes from %s to %s",
_stream->str_stream_addr, _stream->str_stream_addr,
evbuffer_get_length(inbuf), evbuffer_get_length(inbuf),
bev == _stream->conn_downstream->bev ? "conn_downstream" : "conn_upstream", bev == _stream->conn_downstream->bev ? "conn_downstream" : "conn_upstream",
bev == _stream->conn_downstream->bev ? "conn_fake_c" : "conn_fake_s"); bev == _stream->conn_downstream->bev ? "conn_fake_c" : "conn_fake_s");
TFE_PROXY_STAT_INCREASE(stat_filed, evbuffer_get_length(inbuf));
outbuf = bufferevent_get_output(peer_conn->bev); outbuf = bufferevent_get_output(peer_conn->bev);
evbuffer_add_buffer(outbuf, inbuf); evbuffer_add_buffer(outbuf, inbuf);
@@ -1064,13 +1066,16 @@ static void __steering_stream_bev_readcb(struct bufferevent * bev, void * arg)
struct tfe_stream_private * _stream = (struct tfe_stream_private *)arg; struct tfe_stream_private * _stream = (struct tfe_stream_private *)arg;
struct tfe_conn_private * peer_conn = NULL; struct tfe_conn_private * peer_conn = NULL;
enum TFE_STAT_FIELD stat_filed = TFE_STAT_MAX;
if (bev == _stream->conn_fake_c->bev) if (bev == _stream->conn_fake_c->bev)
{ {
peer_conn = _stream->conn_downstream; peer_conn = _stream->conn_downstream;
stat_filed = STAT_STEERING_CLIENT_RX_B;
} }
else if (bev == _stream->conn_fake_s->bev) else if (bev == _stream->conn_fake_s->bev)
{ {
peer_conn = _stream->conn_upstream; peer_conn = _stream->conn_upstream;
stat_filed = STAT_STEERING_SERVER_RX_B;
} }
else else
{ {
@@ -1088,8 +1093,6 @@ static void __steering_stream_bev_readcb(struct bufferevent * bev, void * arg)
return; return;
} }
// TODO 增加计数
TFE_LOG_DEBUG(__STREAM_LOGGER(_stream), "decrypted traffic steering, %s send %d bytes form %s to %s", TFE_LOG_DEBUG(__STREAM_LOGGER(_stream), "decrypted traffic steering, %s send %d bytes form %s to %s",
_stream->str_stream_addr, _stream->str_stream_addr,
evbuffer_get_length(inbuf), evbuffer_get_length(inbuf),
@@ -1097,6 +1100,7 @@ static void __steering_stream_bev_readcb(struct bufferevent * bev, void * arg)
bev == _stream->conn_fake_c->bev ? "conn_downstream" : "conn_upstream" bev == _stream->conn_fake_c->bev ? "conn_downstream" : "conn_upstream"
); );
TFE_PROXY_STAT_INCREASE(stat_filed, evbuffer_get_length(inbuf));
struct evbuffer * outbuf = bufferevent_get_output(peer_conn->bev); struct evbuffer * outbuf = bufferevent_get_output(peer_conn->bev);
evbuffer_add_buffer(outbuf, inbuf); evbuffer_add_buffer(outbuf, inbuf);
} }
@@ -1188,6 +1192,7 @@ void ssl_downstream_create_on_success(future_result_t * result, void * user)
{ {
__conn_private_enable(_stream->conn_fake_c); __conn_private_enable(_stream->conn_fake_c);
__conn_private_enable(_stream->conn_fake_s); __conn_private_enable(_stream->conn_fake_s);
TFE_PROXY_STAT_INCREASE(STAT_STEERING_SSL_CONN, 1);
} }
return; return;
@@ -1749,6 +1754,7 @@ int tfe_stream_init_by_fds(struct tfe_stream * stream, evutil_socket_t fd_downst
{ {
__conn_private_enable(_stream->conn_fake_s); __conn_private_enable(_stream->conn_fake_s);
__conn_private_enable(_stream->conn_fake_c); __conn_private_enable(_stream->conn_fake_c);
TFE_PROXY_STAT_INCREASE(STAT_STEERING_HTTP_CONN, 1);
} }
TFE_PROXY_STAT_INCREASE(STAT_STREAM_TCP_PLAIN, 1); TFE_PROXY_STAT_INCREASE(STAT_STREAM_TCP_PLAIN, 1);