diff options
author | Sergey Nazaryev <sergey@nazaryev.ru> | 2018-11-06 16:55:47 +0000 |
---|---|---|
committer | Sergey Nazaryev <sergey@nazaryev.ru> | 2018-11-06 16:55:47 +0000 |
commit | 04efa585aa227d44dad4a8f313bdc4e5bd2a9de5 (patch) | |
tree | dda54c4f56430ffac02e6f0e51c26b0118581444 | |
parent | 013563a8065725111b093c9be200485b02354685 (diff) | |
download | ifstat-04efa585aa227d44dad4a8f313bdc4e5bd2a9de5.zip ifstat-04efa585aa227d44dad4a8f313bdc4e5bd2a9de5.tar.gz ifstat-04efa585aa227d44dad4a8f313bdc4e5bd2a9de5.tar.bz2 |
README.md: cosmetic fix
-rw-r--r-- | README.md | 32 |
1 files changed, 18 insertions, 14 deletions
@@ -9,7 +9,6 @@ ifstat ## Зависимости - - актуальное ядро Linux с поддержкой eBPF и XDP (4.4+ должно подойти); - запущенный ubusd, установленные libubus (скомпиленный с @@ -25,14 +24,18 @@ ifstat 1. **IMPORTANT!** Перейти с `BPF_ARRAY` на `BPF_TABLE("percpu_array", ...)` - 2. Завести автоматические тесты с `tcpreplay`, созданием - TAP-устройства и проверкой полученной статистики; + 2. Завести автоматические тесты с запуском `tcpreplay`, созданием + виртуального сетевого интерфейса и валидацией полученной + статистики; 3. Написать инструкцию/скрипт с точностью до команд, с информацией о том, как установить все необходимые зависимости для Debian; 4. Провести ручное нагрузочное тестирование на реальном железе с - Debian и посмотреть на производительность. + Debian и посмотреть на производительность; + + 5. Перейти с lua-based конфига на что-то, что можно адекватно + валидировать (ini/yaml/toml). ## Запуск и конфигурация @@ -70,16 +73,17 @@ local _config = { ## Архитектура Для того, чтобы собирать статистику максимально эффективно, -используется интерфейс ядра [eBPF][ebpf]. Это даёт возможность -запускать код, подсчитывающий необходимую статистику прямо в ядре. -Кроме того, для наибольшей производительности eBPF вешается на -XDP-хук (eXpress Data Path), что позволяет получить доступ до пакета -даже раньше, чем он будет обработан сетевым стеком ядра. +используется интерфейс ядра [eBPF][ebpf]. Этот интерфейс даёт +возможность встроить код прямо в ядро, который будет подсчитывать +необходимую статистику. Кроме того, для наибольшей производительности +eBPF вешается на XDP-хук (eXpress Data Path), что позволяет получить +доступ до пакета даже раньше, чем он будет обработан сетевым стеком +ядра. Основной код, задействованный в фильтрации и подсчёте статистики, написан на Си (`ifstat_kern.c`). Процессом компиляции и инъекцией этого кода в ядро занимается lua-скрипт, основанный на официальных -байндингах проекта [bcc][bcc] (это фреймворк, упрощающий процесс +байндингах проекта [bcc][bcc] (это фреймворк упрощает процесс создания утилит, использующих eBPF). Непосредственно компиляцией занимается LLVM/Clang. @@ -100,11 +104,11 @@ XDP-хук (eXpress Data Path), что позволяет получить до Lua-байндинги; 4. Идея написать с нуля и поддерживать байндинги для bcc или ubus - ля других языков откидывается сразу. + для других языков откидывается сразу. -Таким образом, на выбор остаются только Си и Lua. Писать на -Lua обработку конфигов и сериализацию/десериализацию данных -значительно проще и приятнее, чем на Си, поэтому Lua и был выбран. +Таким образом, на выбор остаются только Си и Lua. Писать на Lua +обработку конфигов и сериализацию/десериализацию данных значительно +проще и приятнее, чем на Си, поэтому Lua и был выбран. ## Пример вывода утилиты ifstat |