11
11
*
12
12
*****************************************************************/
13
13
14
- static char * socket_dimension_names [NETDATA_MAX_SOCKET_VECTOR ] = { "sent" , " received" , "close " , "sent " ,
15
- "received" , "retransmitted" };
16
- static char * socket_id_names [NETDATA_MAX_SOCKET_VECTOR ] = { "tcp_sendmsg " , "tcp_cleanup_rbuf" , "tcp_close" ,
17
- "udp_sendmsg " , "udp_recvmsg " , "tcp_retransmit_skb" };
14
+ static char * socket_dimension_names [NETDATA_MAX_SOCKET_VECTOR ] = { "received" , "sent " , "close " ,
15
+ "received" , "sent" , " retransmitted" };
16
+ static char * socket_id_names [NETDATA_MAX_SOCKET_VECTOR ] = { "tcp_cleanup_rbuf " , "tcp_sendmsg" , "tcp_close" ,
17
+ "udp_recvmsg " , "udp_sendmsg " , "tcp_retransmit_skb" };
18
18
19
19
static ebpf_local_maps_t socket_maps [] = {{.name = "tbl_bandwidth" ,
20
20
.internal_input = NETDATA_COMPILED_CONNECTIONS_ALLOWED ,
21
- .user_input = NETDATA_MAXIMUM_CONNECTIONS_ALLOWED },
21
+ .user_input = NETDATA_MAXIMUM_CONNECTIONS_ALLOWED ,
22
+ .type = NETDATA_EBPF_MAP_STATIC ,
23
+ .map_fd = ND_EBPF_MAP_FD_NOT_INITIALIZED },
24
+ {.name = "tbl_global_sock" ,
25
+ .internal_input = NETDATA_SOCKET_COUNTER ,
26
+ .user_input = 0 , .type = NETDATA_EBPF_MAP_STATIC ,
27
+ .map_fd = ND_EBPF_MAP_FD_NOT_INITIALIZED },
28
+ {.name = "tbl_lports" ,
29
+ .internal_input = NETDATA_SOCKET_COUNTER ,
30
+ .user_input = 0 , .type = NETDATA_EBPF_MAP_STATIC ,
31
+ .map_fd = ND_EBPF_MAP_FD_NOT_INITIALIZED },
22
32
{.name = "tbl_conn_ipv4" ,
23
33
.internal_input = NETDATA_COMPILED_CONNECTIONS_ALLOWED ,
24
- .user_input = NETDATA_MAXIMUM_CONNECTIONS_ALLOWED },
34
+ .user_input = NETDATA_MAXIMUM_CONNECTIONS_ALLOWED ,
35
+ .type = NETDATA_EBPF_MAP_STATIC ,
36
+ .map_fd = ND_EBPF_MAP_FD_NOT_INITIALIZED },
25
37
{.name = "tbl_conn_ipv6" ,
26
38
.internal_input = NETDATA_COMPILED_CONNECTIONS_ALLOWED ,
27
- .user_input = NETDATA_MAXIMUM_CONNECTIONS_ALLOWED },
28
- {.name = "tbl_nv_udp_conn_stats" ,
39
+ .user_input = NETDATA_MAXIMUM_CONNECTIONS_ALLOWED ,
40
+ .type = NETDATA_EBPF_MAP_STATIC ,
41
+ .map_fd = ND_EBPF_MAP_FD_NOT_INITIALIZED },
42
+ {.name = "tbl_nv_udp" ,
29
43
.internal_input = NETDATA_COMPILED_UDP_CONNECTIONS_ALLOWED ,
30
- .user_input = NETDATA_MAXIMUM_UDP_CONNECTIONS_ALLOWED },
44
+ .user_input = NETDATA_MAXIMUM_UDP_CONNECTIONS_ALLOWED ,
45
+ .type = NETDATA_EBPF_MAP_STATIC ,
46
+ .map_fd = ND_EBPF_MAP_FD_NOT_INITIALIZED },
47
+ {.name = "socket_ctrl" , .internal_input = NETDATA_CONTROLLER_END ,
48
+ .user_input = 0 ,
49
+ .type = NETDATA_EBPF_MAP_CONTROLLER ,
50
+ .map_fd = ND_EBPF_MAP_FD_NOT_INITIALIZED },
31
51
{.name = NULL , .internal_input = 0 , .user_input = 0 }};
32
52
33
53
static netdata_idx_t * socket_hash_values = NULL ;
@@ -50,7 +70,6 @@ netdata_socket_t *socket_values;
50
70
51
71
ebpf_network_viewer_port_list_t * listen_ports = NULL ;
52
72
53
- static int * map_fd = NULL ;
54
73
static struct bpf_object * objects = NULL ;
55
74
static struct bpf_link * * probe_links = NULL ;
56
75
@@ -289,30 +308,24 @@ static void ebpf_socket_send_data(ebpf_module_t *em)
289
308
290
309
// We read bytes from function arguments, but bandiwdth is given in bits,
291
310
// so we need to multiply by 8 to convert for the final value.
292
- write_count_chart (
293
- NETDATA_TCP_FUNCTION_COUNT , NETDATA_EBPF_FAMILY , socket_publish_aggregated , 3 );
294
- write_io_chart (
295
- NETDATA_TCP_FUNCTION_BITS , NETDATA_EBPF_FAMILY , socket_id_names [0 ], common_tcp .write * 8 /1000 ,
296
- socket_id_names [1 ], common_tcp .read * 8 /1000 );
311
+ write_count_chart (NETDATA_TCP_FUNCTION_COUNT , NETDATA_EBPF_IP_FAMILY , socket_publish_aggregated , 3 );
312
+ write_io_chart (NETDATA_TCP_FUNCTION_BITS , NETDATA_EBPF_IP_FAMILY , socket_id_names [0 ],
313
+ common_tcp .read * 8 /BITS_IN_A_KILOBIT , socket_id_names [1 ],
314
+ common_tcp .write * 8 /BITS_IN_A_KILOBIT );
297
315
if (em -> mode < MODE_ENTRY ) {
298
- write_err_chart (
299
- NETDATA_TCP_FUNCTION_ERROR , NETDATA_EBPF_FAMILY , socket_publish_aggregated , 2 );
300
- }
301
- write_count_chart (
302
- NETDATA_TCP_RETRANSMIT , NETDATA_EBPF_FAMILY , & socket_publish_aggregated [NETDATA_IDX_TCP_RETRANSMIT ],
303
- 1 );
304
-
305
- write_count_chart (
306
- NETDATA_UDP_FUNCTION_COUNT , NETDATA_EBPF_FAMILY , & socket_publish_aggregated [NETDATA_IDX_UDP_RECVBUF ],
307
- 2 );
308
- write_io_chart (
309
- NETDATA_UDP_FUNCTION_BITS , NETDATA_EBPF_FAMILY ,
310
- socket_id_names [3 ],(long long )common_udp .write * 8 /100 ,
311
- socket_id_names [4 ], (long long )common_udp .read * 8 /1000 );
316
+ write_err_chart (NETDATA_TCP_FUNCTION_ERROR , NETDATA_EBPF_IP_FAMILY , socket_publish_aggregated , 2 );
317
+ }
318
+ write_count_chart (NETDATA_TCP_RETRANSMIT , NETDATA_EBPF_IP_FAMILY ,
319
+ & socket_publish_aggregated [NETDATA_IDX_TCP_RETRANSMIT ],1 );
320
+
321
+ write_count_chart (NETDATA_UDP_FUNCTION_COUNT , NETDATA_EBPF_IP_FAMILY ,
322
+ & socket_publish_aggregated [NETDATA_IDX_UDP_RECVBUF ],2 );
323
+ write_io_chart (NETDATA_UDP_FUNCTION_BITS , NETDATA_EBPF_IP_FAMILY ,
324
+ socket_id_names [3 ], (long long )common_udp .read * 8 /BITS_IN_A_KILOBIT ,
325
+ socket_id_names [4 ], (long long )common_udp .write * 8 /BITS_IN_A_KILOBIT );
312
326
if (em -> mode < MODE_ENTRY ) {
313
- write_err_chart (
314
- NETDATA_UDP_FUNCTION_ERROR , NETDATA_EBPF_FAMILY , & socket_publish_aggregated [NETDATA_UDP_START ],
315
- 2 );
327
+ write_err_chart (NETDATA_UDP_FUNCTION_ERROR , NETDATA_EBPF_IP_FAMILY ,
328
+ & socket_publish_aggregated [NETDATA_UDP_START ], 2 );
316
329
}
317
330
}
318
331
@@ -445,34 +458,34 @@ void ebpf_socket_send_apps_data(ebpf_module_t *em, struct target *root)
445
458
*/
446
459
static void ebpf_create_global_charts (ebpf_module_t * em )
447
460
{
448
- ebpf_create_chart (NETDATA_EBPF_FAMILY ,
461
+ ebpf_create_chart (NETDATA_EBPF_IP_FAMILY ,
449
462
NETDATA_TCP_FUNCTION_COUNT ,
450
463
"Calls to internal functions" ,
451
464
EBPF_COMMON_DIMENSION_CALL ,
452
- NETDATA_SOCKET_GROUP ,
465
+ NETDATA_SOCKET_KERNEL_FUNCTIONS ,
453
466
NULL ,
454
467
NETDATA_EBPF_CHART_TYPE_LINE ,
455
468
21070 ,
456
469
ebpf_create_global_dimension ,
457
470
socket_publish_aggregated ,
458
471
3 , NETDATA_EBPF_MODULE_NAME_SOCKET );
459
472
460
- ebpf_create_chart (NETDATA_EBPF_FAMILY , NETDATA_TCP_FUNCTION_BITS ,
473
+ ebpf_create_chart (NETDATA_EBPF_IP_FAMILY , NETDATA_TCP_FUNCTION_BITS ,
461
474
"TCP bandwidth" , EBPF_COMMON_DIMENSION_BITS ,
462
- NETDATA_SOCKET_GROUP ,
475
+ NETDATA_SOCKET_KERNEL_FUNCTIONS ,
463
476
NULL ,
464
477
NETDATA_EBPF_CHART_TYPE_LINE ,
465
478
21071 ,
466
479
ebpf_create_global_dimension ,
467
480
socket_publish_aggregated ,
468
- 3 , NETDATA_EBPF_MODULE_NAME_SOCKET );
481
+ 2 , NETDATA_EBPF_MODULE_NAME_SOCKET );
469
482
470
483
if (em -> mode < MODE_ENTRY ) {
471
- ebpf_create_chart (NETDATA_EBPF_FAMILY ,
484
+ ebpf_create_chart (NETDATA_EBPF_IP_FAMILY ,
472
485
NETDATA_TCP_FUNCTION_ERROR ,
473
486
"TCP errors" ,
474
487
EBPF_COMMON_DIMENSION_CALL ,
475
- NETDATA_SOCKET_GROUP ,
488
+ NETDATA_SOCKET_KERNEL_FUNCTIONS ,
476
489
NULL ,
477
490
NETDATA_EBPF_CHART_TYPE_LINE ,
478
491
21072 ,
@@ -481,33 +494,33 @@ static void ebpf_create_global_charts(ebpf_module_t *em)
481
494
2 , NETDATA_EBPF_MODULE_NAME_SOCKET );
482
495
}
483
496
484
- ebpf_create_chart (NETDATA_EBPF_FAMILY ,
497
+ ebpf_create_chart (NETDATA_EBPF_IP_FAMILY ,
485
498
NETDATA_TCP_RETRANSMIT ,
486
499
"Packages retransmitted" ,
487
500
EBPF_COMMON_DIMENSION_CALL ,
488
- NETDATA_SOCKET_GROUP ,
501
+ NETDATA_SOCKET_KERNEL_FUNCTIONS ,
489
502
NULL ,
490
503
NETDATA_EBPF_CHART_TYPE_LINE ,
491
504
21073 ,
492
505
ebpf_create_global_dimension ,
493
506
& socket_publish_aggregated [NETDATA_IDX_TCP_RETRANSMIT ],
494
507
1 , NETDATA_EBPF_MODULE_NAME_SOCKET );
495
508
496
- ebpf_create_chart (NETDATA_EBPF_FAMILY ,
509
+ ebpf_create_chart (NETDATA_EBPF_IP_FAMILY ,
497
510
NETDATA_UDP_FUNCTION_COUNT ,
498
511
"UDP calls" ,
499
512
EBPF_COMMON_DIMENSION_CALL ,
500
- NETDATA_SOCKET_GROUP ,
513
+ NETDATA_SOCKET_KERNEL_FUNCTIONS ,
501
514
NULL ,
502
515
NETDATA_EBPF_CHART_TYPE_LINE ,
503
516
21074 ,
504
517
ebpf_create_global_dimension ,
505
518
& socket_publish_aggregated [NETDATA_IDX_UDP_RECVBUF ],
506
519
2 , NETDATA_EBPF_MODULE_NAME_SOCKET );
507
520
508
- ebpf_create_chart (NETDATA_EBPF_FAMILY , NETDATA_UDP_FUNCTION_BITS ,
521
+ ebpf_create_chart (NETDATA_EBPF_IP_FAMILY , NETDATA_UDP_FUNCTION_BITS ,
509
522
"UDP bandwidth" , EBPF_COMMON_DIMENSION_BITS ,
510
- NETDATA_SOCKET_GROUP ,
523
+ NETDATA_SOCKET_KERNEL_FUNCTIONS ,
511
524
NULL ,
512
525
NETDATA_EBPF_CHART_TYPE_LINE ,
513
526
21075 ,
@@ -516,11 +529,11 @@ static void ebpf_create_global_charts(ebpf_module_t *em)
516
529
2 , NETDATA_EBPF_MODULE_NAME_SOCKET );
517
530
518
531
if (em -> mode < MODE_ENTRY ) {
519
- ebpf_create_chart (NETDATA_EBPF_FAMILY ,
532
+ ebpf_create_chart (NETDATA_EBPF_IP_FAMILY ,
520
533
NETDATA_UDP_FUNCTION_ERROR ,
521
534
"UDP errors" ,
522
535
EBPF_COMMON_DIMENSION_CALL ,
523
- NETDATA_SOCKET_GROUP ,
536
+ NETDATA_SOCKET_KERNEL_FUNCTIONS ,
524
537
NULL ,
525
538
NETDATA_EBPF_CHART_TYPE_LINE ,
526
539
21076 ,
@@ -1439,7 +1452,7 @@ static void read_listen_table()
1439
1452
uint16_t key = 0 ;
1440
1453
uint16_t next_key = 0 ;
1441
1454
1442
- int fd = map_fd [ NETDATA_SOCKET_LISTEN_TABLE ] ;
1455
+ int fd = socket_maps [ NETDATA_SOCKET_LPORTS ]. map_fd ;
1443
1456
uint8_t value ;
1444
1457
while (bpf_map_get_next_key (fd , & key , & next_key ) == 0 ) {
1445
1458
int test = bpf_map_lookup_elem (fd , & key , & value );
@@ -1478,8 +1491,8 @@ void *ebpf_socket_read_hash(void *ptr)
1478
1491
heartbeat_t hb ;
1479
1492
heartbeat_init (& hb );
1480
1493
usec_t step = NETDATA_SOCKET_READ_SLEEP_MS * em -> update_time ;
1481
- int fd_ipv4 = map_fd [ NETDATA_SOCKET_IPV4_HASH_TABLE ] ;
1482
- int fd_ipv6 = map_fd [ NETDATA_SOCKET_IPV6_HASH_TABLE ] ;
1494
+ int fd_ipv4 = socket_maps [ NETDATA_SOCKET_TABLE_IPV4 ]. map_fd ;
1495
+ int fd_ipv6 = socket_maps [ NETDATA_SOCKET_TABLE_IPV6 ]. map_fd ;
1483
1496
int network_connection = em -> optional ;
1484
1497
while (!close_ebpf_plugin ) {
1485
1498
usec_t dt = heartbeat_next (& hb , step );
@@ -1506,7 +1519,7 @@ static void read_hash_global_tables()
1506
1519
netdata_idx_t res [NETDATA_SOCKET_COUNTER ];
1507
1520
1508
1521
netdata_idx_t * val = socket_hash_values ;
1509
- int fd = map_fd [ NETDATA_SOCKET_GLOBAL_HASH_TABLE ] ;
1522
+ int fd = socket_maps [ NETDATA_SOCKET_GLOBAL ]. map_fd ;
1510
1523
for (idx = 0 ; idx < NETDATA_SOCKET_COUNTER ; idx ++ ) {
1511
1524
if (!bpf_map_lookup_elem (fd , & idx , val )) {
1512
1525
uint64_t total = 0 ;
@@ -1588,7 +1601,7 @@ void ebpf_socket_bandwidth_accumulator(ebpf_bandwidth_t *out)
1588
1601
*/
1589
1602
static void ebpf_socket_update_apps_data ()
1590
1603
{
1591
- int fd = map_fd [ NETDATA_SOCKET_APPS_HASH_TABLE ] ;
1604
+ int fd = socket_maps [ NETDATA_SOCKET_TABLE_BANDWIDTH ]. map_fd ;
1592
1605
ebpf_bandwidth_t * eb = bandwidth_vector ;
1593
1606
uint32_t key ;
1594
1607
struct pid_stat * pids = root_of_pids ;
@@ -1930,14 +1943,6 @@ static void ebpf_socket_allocate_global_vectors(size_t length)
1930
1943
outbound_vectors .plot = callocz (network_viewer_opt .max_dim , sizeof (netdata_socket_plot_t ));
1931
1944
}
1932
1945
1933
- /**
1934
- * Set local function pointers, this function will never be compiled with static libraries
1935
- */
1936
- static void set_local_pointers ()
1937
- {
1938
- map_fd = socket_data .map_fd ;
1939
- }
1940
-
1941
1946
/**
1942
1947
* Initialize Inbound and Outbound
1943
1948
*
@@ -2887,7 +2892,6 @@ void *ebpf_socket_thread(void *ptr)
2887
2892
goto endsocket ;
2888
2893
}
2889
2894
2890
- set_local_pointers ();
2891
2895
if (running_on_kernel < NETDATA_EBPF_KERNEL_5_0 )
2892
2896
em -> mode = MODE_ENTRY ;
2893
2897
0 commit comments