From 4811d19748e9d307bf9f1b2dbc3f5c940644065b Mon Sep 17 00:00:00 2001 From: baydakov-georgiy Date: Thu, 7 May 2026 14:10:52 +0300 Subject: [PATCH 1/4] feat(worker): change buffer for logging macros 'stdout' to 'stderr' --- worker/include/dpdk_filter/types.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/worker/include/dpdk_filter/types.h b/worker/include/dpdk_filter/types.h index dca137f..c24d119 100644 --- a/worker/include/dpdk_filter/types.h +++ b/worker/include/dpdk_filter/types.h @@ -7,15 +7,15 @@ #ifdef DEBUG #define LOG_INFO(info, ...) \ - fprintf(stdout, "[INFO] %s: %d: " info "\n", __func__, __LINE__, \ + fprintf(stderr, "[INFO] %s: %d: " info "\n", __func__, __LINE__, \ ##__VA_ARGS__) #define LOG_ERROR(error, ...) \ - fprintf(stdout, "[ERROR] %s: %d: " error "\n", __func__, __LINE__, \ + fprintf(stderr, "[ERROR] %s: %d: " error "\n", __func__, __LINE__, \ ##__VA_ARGS__) #define LOG_WARNING(warning, ...) \ - fprintf(stdout, "[WARNING] %s: %d: " warning "\n", __func__, __LINE__, \ + fprintf(stderr, "[WARNING] %s: %d: " warning "\n", __func__, __LINE__, \ ##__VA_ARGS__) #else @@ -24,11 +24,11 @@ } while (0) #define LOG_ERROR(error, ...) \ - fprintf(stdout, "[ERROR] %s: %d: " error "\n", __func__, __LINE__, \ + fprintf(stderr, "[ERROR] %s: %d: " error "\n", __func__, __LINE__, \ ##__VA_ARGS__) #define LOG_WARNING(warning, ...) \ - fprintf(stdout, "[WARNING] %s: %d: " warning "\n", __func__, __LINE__, \ + fprintf(stderr, "[WARNING] %s: %d: " warning "\n", __func__, __LINE__, \ ##__VA_ARGS__) #endif From 46b00afe72f6de194eee5793d29578da4e2f1261 Mon Sep 17 00:00:00 2001 From: baydakov-georgiy Date: Thu, 7 May 2026 14:24:53 +0300 Subject: [PATCH 2/4] feat(worker): add logging for dpdk_filter --- worker/src/dpdk_filter/filtr_packets.c | 8 ++++---- worker/src/dpdk_filter/pars_packets.c | 10 ++++++++++ worker/src/dpdk_filter/proc_packets.c | 14 ++++++++++++++ 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/worker/src/dpdk_filter/filtr_packets.c b/worker/src/dpdk_filter/filtr_packets.c index 3844303..2292087 100644 --- a/worker/src/dpdk_filter/filtr_packets.c +++ b/worker/src/dpdk_filter/filtr_packets.c @@ -156,12 +156,12 @@ bool main_filtring_by_domain(struct requested_classification *req_clas, struct info_of_pakage *info_pac) { if (check_domain_is_block(info_pac->domain, policy->block_domains) == true) { - LOG_INFO("This domain is blocked"); + LOG_INFO("Domain '%s' is blocked", info_pac->domain); return false; } if (check_domain_is_allow(info_pac->domain, policy->allow_domains) == true) { - LOG_INFO("This domain is allowed"); + LOG_INFO("Domain '%s' is allowed", info_pac->domain); return true; } @@ -173,12 +173,12 @@ bool main_filtring_by_ip(struct requested_classification *req_clas, struct info_of_pakage *info_pac) { if (check_ip_is_block(info_pac, policy) == true) { - LOG_INFO("This ip is blocked"); + LOG_INFO("IPv%d dst is blocked", info_pac->ip_version == IP_4 ? 4 : 6); return false; } if (check_ip_is_allow(info_pac, policy) == true) { - LOG_INFO("This ip is allowed"); + LOG_INFO("IPv%d dst is allowed", info_pac->ip_version == IP_4 ? 4 : 6); return true; } diff --git a/worker/src/dpdk_filter/pars_packets.c b/worker/src/dpdk_filter/pars_packets.c index d02514f..d5806b0 100644 --- a/worker/src/dpdk_filter/pars_packets.c +++ b/worker/src/dpdk_filter/pars_packets.c @@ -24,6 +24,7 @@ void parsing_pakage(struct rte_mbuf *packet, struct info_of_pakage *info_pac) { uint32_t l3_offset = hdr_lens.l2_len; if (pkt_type & RTE_PTYPE_L3_IPV4) { + LOG_INFO("IPv4 packet detected"); info_pac->ip_version = IP_4; info_pac->ethernet_type_protocol = rte_cpu_to_be_16(RTE_ETHER_TYPE_IPV4); @@ -37,12 +38,15 @@ void parsing_pakage(struct rte_mbuf *packet, struct info_of_pakage *info_pac) { struct rte_tcp_hdr *tcp_hdr = rte_pktmbuf_mtod_offset( packet, struct rte_tcp_hdr *, l3_offset + hdr_lens.l3_len); info_pac->number_port = tcp_hdr->dst_port; + LOG_INFO("TCP dst port: %hu", ntohs(info_pac->number_port)); } else if (pkt_type & RTE_PTYPE_L4_UDP) { struct rte_udp_hdr *udp_hdr = rte_pktmbuf_mtod_offset( packet, struct rte_udp_hdr *, l3_offset + hdr_lens.l3_len); info_pac->number_port = udp_hdr->dst_port; + LOG_INFO("UDP dst port: %hu", ntohs(info_pac->number_port)); } } else if (pkt_type & RTE_PTYPE_L3_IPV6) { + LOG_INFO("IPv6 packet detected"); info_pac->ip_version = IP_6; info_pac->ethernet_type_protocol = rte_cpu_to_be_16(RTE_ETHER_TYPE_IPV6); @@ -58,15 +62,18 @@ void parsing_pakage(struct rte_mbuf *packet, struct info_of_pakage *info_pac) { struct rte_tcp_hdr *tcp_hdr = rte_pktmbuf_mtod_offset( packet, struct rte_tcp_hdr *, l3_offset + hdr_lens.l3_len); info_pac->number_port = tcp_hdr->dst_port; + LOG_INFO("TCP dst port: %hu", ntohs(info_pac->number_port)); } else if (pkt_type & RTE_PTYPE_L4_UDP) { struct rte_udp_hdr *udp_hdr = rte_pktmbuf_mtod_offset( packet, struct rte_udp_hdr *, l3_offset + hdr_lens.l3_len); info_pac->number_port = udp_hdr->dst_port; + LOG_INFO("UDP dst port: %hu", ntohs(info_pac->number_port)); } } if ((pkt_type & RTE_PTYPE_L4_UDP) && info_pac->number_port == rte_cpu_to_be_16(53)) { + LOG_INFO("DNS query detected"); uint32_t l4_offset = l3_offset + hdr_lens.l3_len + hdr_lens.l4_len; uint8_t *udp_payload = rte_pktmbuf_mtod_offset(packet, uint8_t *, l4_offset); @@ -95,6 +102,9 @@ void parsing_pakage(struct rte_mbuf *packet, struct info_of_pakage *info_pac) { pos += label_len; } *dst = '\0'; + LOG_INFO("Domain extracted: %s", info_pac->domain); + } else { + LOG_WARNING("Malformed DNS name field in packet"); } } } diff --git a/worker/src/dpdk_filter/proc_packets.c b/worker/src/dpdk_filter/proc_packets.c index ec6f892..30cd0a3 100644 --- a/worker/src/dpdk_filter/proc_packets.c +++ b/worker/src/dpdk_filter/proc_packets.c @@ -41,6 +41,10 @@ void pakage_processing(struct net_port *port_in, struct net_port *port_out, uint16_t nb_rx = rte_eth_rx_burst(port_in->port_id, queue_number, pkts, nb_pkts); + if (nb_rx > 0) { + LOG_INFO("Received %hu packets on queue %hu", nb_rx, queue_number); + } + for (int i = 0; i < nb_rx; i++) { struct info_of_pakage info_pac; @@ -53,6 +57,8 @@ void pakage_processing(struct net_port *port_in, struct net_port *port_out, struct node_cache_ip *cached_node_ip = NULL; if (check_is_exception(&info_pac.number_port) == true) { + LOG_INFO("Exception port %hu, forwarding to exception port", + ntohs(info_pac.number_port)); package_sending_decision(true, pkts[i], port_exception, queue_number); continue; } @@ -70,9 +76,12 @@ void pakage_processing(struct net_port *port_in, struct net_port *port_out, } if (ret >= 0 && cached_node_ip) { + LOG_INFO("IP cache hit, decision: %s", + cached_node_ip->solution_is_send ? "send" : "drop"); package_sending_decision(cached_node_ip->solution_is_send, pkts[i], port_out, queue_number); } else if (ret == -ENOENT) { + LOG_INFO("IP cache miss, applying filter"); struct requested_classification req_clas; // query to ip controller @@ -112,6 +121,8 @@ void pakage_processing(struct net_port *port_in, struct net_port *port_out, struct node_cache_domain *cached_node_domain = NULL; if (check_is_exception(&info_pac.number_port) == true) { + LOG_INFO("Exception port %hu, forwarding to exception port", + ntohs(info_pac.number_port)); package_sending_decision(true, pkts[i], port_exception, queue_number); continue; } @@ -119,9 +130,12 @@ void pakage_processing(struct net_port *port_in, struct net_port *port_out, int ret = lookup_dns_cache(info_pac.domain, &cached_node_domain); if (ret >= 0 && cached_node_domain) { + LOG_INFO("Domain cache hit for '%s', decision: %s", info_pac.domain, + cached_node_domain->solution_is_send ? "send" : "drop"); package_sending_decision(cached_node_domain->solution_is_send, pkts[i], port_out, queue_number); } else if (ret == -ENOENT) { + LOG_INFO("Domain cache miss for '%s', applying filter", info_pac.domain); struct requested_classification req_clas; // query to domain controller From c2ea316c29dfcdc9e9a7ae058c8febafaaf46ae9 Mon Sep 17 00:00:00 2001 From: baydakov-georgiy Date: Thu, 7 May 2026 14:35:15 +0300 Subject: [PATCH 3/4] feat(worker): add logging to worker --- worker/src/main.cpp | 1 + worker/src/worker.cpp | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/worker/src/main.cpp b/worker/src/main.cpp index 7795627..5d1ea2e 100644 --- a/worker/src/main.cpp +++ b/worker/src/main.cpp @@ -37,6 +37,7 @@ int main(int argc, char **argv) { return 1; } + spdlog::info("Starting worker ID: {}", worker_id); spdlog::info("Initialize MetricsCollector with {}:{}", gateway_address, gateway_port); diff --git a/worker/src/worker.cpp b/worker/src/worker.cpp index 8eb0ea2..d6888e9 100644 --- a/worker/src/worker.cpp +++ b/worker/src/worker.cpp @@ -169,6 +169,7 @@ void Worker::requestPolicyFromController() { current_policy.min_trust_level = pol.min_trust_level(); current_config_version = pol.config_version(); + spdlog::info("Clearing cache due to policy update"); clear_cache(); spdlog::info("POLICY LOADED"); @@ -287,6 +288,7 @@ Worker::Worker(uint64_t id) : worker_id(id), state(WorkerState::FREE) { auto channel = grpc::CreateChannel(controller_addr, grpc::InsecureChannelCredentials()); stub_ = DataService::NewStub(channel); + spdlog::info("Worker ID: {}", worker_id); spdlog::info("gRPC channel created to {}", controller_addr); signal(SIGINT, signal_handler); signal(SIGTERM, signal_handler); @@ -349,6 +351,7 @@ void Worker::MainLoop() { last_stats_time = now; stats_interval = MIN_STATS_TIME + (rand() % (MAX_STATS_TIME - MIN_STATS_TIME + 1)); + spdlog::info("Next stats report in {}s", stats_interval); } int64_t seconds_since_policy = (now - last_policy_time) / 1s; @@ -357,6 +360,7 @@ void Worker::MainLoop() { last_policy_time = now; policy_interval = MIN_POLICY_TIME + (rand() % (MAX_POLICY_TIME - MIN_POLICY_TIME + 1)); + spdlog::info("Next policy request in {}s", policy_interval); } } From 78dcbf2ee156671461264695ae1b9fe4d0391934 Mon Sep 17 00:00:00 2001 From: baydakov-georgiy Date: Thu, 7 May 2026 14:40:05 +0300 Subject: [PATCH 4/4] style(worker): fix linter --- worker/src/dpdk_filter/proc_packets.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/worker/src/dpdk_filter/proc_packets.c b/worker/src/dpdk_filter/proc_packets.c index 30cd0a3..934aaa7 100644 --- a/worker/src/dpdk_filter/proc_packets.c +++ b/worker/src/dpdk_filter/proc_packets.c @@ -135,7 +135,8 @@ void pakage_processing(struct net_port *port_in, struct net_port *port_out, package_sending_decision(cached_node_domain->solution_is_send, pkts[i], port_out, queue_number); } else if (ret == -ENOENT) { - LOG_INFO("Domain cache miss for '%s', applying filter", info_pac.domain); + LOG_INFO("Domain cache miss for '%s', applying filter", + info_pac.domain); struct requested_classification req_clas; // query to domain controller