Skip to content

Integration of filtering policy and traffic loop analysis#111

Open
stepanrodimanov wants to merge 27 commits intotraffic_filteringfrom
dpdk-integration
Open

Integration of filtering policy and traffic loop analysis#111
stepanrodimanov wants to merge 27 commits intotraffic_filteringfrom
dpdk-integration

Conversation

@stepanrodimanov
Copy link
Copy Markdown
Collaborator

No description provided.

@KonstantinKondratenko
Copy link
Copy Markdown
Member

Почему это не делать через merge веток просто и исправления конфликтов?

@KonstantinKondratenko
Copy link
Copy Markdown
Member

ну вот надо подтянуть актуальные изменения + изменения от коллег ваших, когда они мои правки поправят, а кажется, что это будет сложнее сделать, т.к. это другие коммиты у вас в ветке

Copy link
Copy Markdown
Member

@KonstantinKondratenko KonstantinKondratenko left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В целом нормально кажется, но переделка docker мне не нравится
Вопрос -- нужно ли его так сильно переделывать?
А если да, то нгужно аккуратно -- версии указать, зафиксировать tag базового образа

Comment on lines +3 to +31
RUN apt-get update && apt-get install -y \
build-essential \
cmake \
curl \
git \
wget \
meson \
ninja-build \
libssl-dev \
protobuf-compiler \
libprotobuf-dev \
python3 \
python3-pip \
libnuma-dev \
pkg-config \
libcurl4-openssl-dev \
libbpf-dev \
gcc \
g++ \
m4 \
libpcap-dev \
libsqlite3-dev \
libstdc++6 \
libgcc-s1 \
libssl3 \
libcurl4 \
numactl \
sqlite3 \
&& rm -rf /var/lib/apt/lists/*
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

версии нужно фиксировать

sqlite3 \
&& rm -rf /var/lib/apt/lists/*

RUN pip3 install pyelftools
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

аналогично про версии

  • всякие no cache dir и clean нужно делать, если вы выше уже начали ужимать слои через rm -rf /var/lib/apt/lists/*

Comment thread worker/Dockerfile.cc_x86_to_x86 Outdated
@@ -1,17 +1,54 @@
FROM alpine:3.21.3 AS builder
FROM ubuntu:22.04
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

зачем базовый образ мен6ять, тем более без тега


ENTRYPOINT ["/usr/local/bin/worker", "/data/test.txt", "sha256"]
RUN ldconfig

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

наверное стоит какой-то мюльтистейдж прикрутить в перспективе

Comment thread worker/Makefile.main_x86
rm -f $(TARGET_REAL) $(TARGET_VIRT)

.PHONY: all clean virt No newline at end of file
.PHONY: all clean virt
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

new line лучше оставлять

Copy link
Copy Markdown
Collaborator

@AndrewGavril AndrewGavril left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

По хорошему данный PR должен быть разделен на 3:

  1. Рефакторинг (укаршательства кода)
  2. Добавление функций фильтрации относительно имеющихся политик
  3. Добавление кэша

Ревьюить такое количество кода крайне проблематично.

Comment on lines +4 to +5
#include "../../include/dpdk_filter/constants.h"
#include "../../include/dpdk_filter/types.h"
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Относительные пути -- плохая практика, нужно при сборке указать пути до хедеров, чтобы include работал без относительных путей

Comment on lines 8 to 12
#include "../../include/dpdk_filter/constants.h"
#include "../../include/dpdk_filter/filtr_packets.h"
#include "../../include/dpdk_filter/net_port.h"
#include "../../include/dpdk_filter/pars_packets.h"
#include "../../include/dpdk_filter/constants.h"
#include "../../include/dpdk_filter/types.h"
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Аналогично -- убрать относительные пути

#include "constants.h"
#include <stdint.h>
#include <stdbool.h>
#include <stdint.h>
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Такие изменения лучше не включать в коммиты, чтобы случайно не получать конфликты с другими изменениями. Данный комментарий исправлять не обязательно, так как с этим кодом работаете только вы

Comment thread worker/src/dpdk_filter/dns_cache.c Outdated
@@ -1,5 +1,7 @@
#include "../../include/dpdk_filter/dns_cache.h"
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Опять относительные пути. Это и далее надо исправить.

Comment thread worker/src/dpdk_filter/dns_cache.c Outdated
@@ -1,5 +1,7 @@
#include "../../include/dpdk_filter/dns_cache.h"

static sqlite3 *cache_table;
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Точно ли мы хотим писать на Си, а не на C++?

cache_table потенциально подвержен гонке данных. Лучше бы конечно перейти к C++, сделав класс и защитив примитивами синхронизации такую переменную.

Comment thread worker/src/dpdk_filter/dns_cache.c Outdated
Comment on lines +176 to +189
ret = sqlite3_step(stmt);
if (ret != SQLITE_DONE) {
printf("[ERROR] Failed to insert into main_table: %s\n",
sqlite3_errmsg(cache_table));
sqlite3_finalize(stmt);
return ret;
}

ret = sqlite3_finalize(stmt);
if (ret != SQLITE_OK) {
printf("[ERROR] Failed to delete prepared statement: %s\n",
sqlite3_errmsg(cache_table));
return ret;
}
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Этот код множество раз повторяется для разных полей. Можно вынести в отдельную функцию или переделать в цикл.

Comment thread worker/src/dpdk_filter/dns_cache.c Outdated

ret = sqlite3_exec(cache_table, "COMMIT;", NULL, NULL, NULL);
if (ret != SQLITE_OK) {
printf("[ERROR] Failed to exec COMMIT: %s\n", sqlite3_errmsg(cache_table));
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тут и в остальных местах для вывода разных подписей в начале строки нужно выделить макросы логов, подробнее тут: https://www.valvers.com/open-software/logging-with-gcc/

Можно сделать готовые макросы LOG_ERR, LOG_INFO, LOG_DEBUG, чтобы исключить из строк часть [ERROR], а так же добавить унифицированный формат -- временную метку, вывод функции, где производится лог и т.д.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Интеграция политики фильтрации и цикла анализа трафика

4 participants