diff options
author | Sergey Nazaryev <sergey@nazaryev.ru> | 2018-11-06 16:41:04 +0000 |
---|---|---|
committer | Sergey Nazaryev <sergey@nazaryev.ru> | 2018-11-06 16:54:01 +0000 |
commit | a81fb2b2681fe901079aa380b5008252e175387c (patch) | |
tree | c3b4b49c4ea39fb7fd5b142496ef8ff6dd14d328 | |
parent | 3016157980dbe81b7d61d65f61a3c2f749995aef (diff) | |
download | ifstat-a81fb2b2681fe901079aa380b5008252e175387c.zip ifstat-a81fb2b2681fe901079aa380b5008252e175387c.tar.gz ifstat-a81fb2b2681fe901079aa380b5008252e175387c.tar.bz2 |
README.md: фиксы грамматики
-rw-r--r-- | README.md | 44 |
1 files changed, 22 insertions, 22 deletions
@@ -5,7 +5,7 @@ ifstat статистику (количество полученных пакетов, количество полученных байт, распределение количества пакетов по их размерам) о трафике установленного вида и отправляет броадкастом полученную статистику по -[ubus](ubus). +[ubus][ubus]. ## Зависимости @@ -51,13 +51,13 @@ local _config = { filters = { { - filter_num = 0, -- номер фильтра - enabled = 1, -- включен (1) / выключен (0) - ipproto = IPPROTO_TCP, -- IPPROTO_TCP, IPPROTO_UDP или ANY - src_ip = "140.82.33.182", -- строка с IPv4 или ANY - dst_ip = ANY, -- аналогично src_ip - src_port = 22, -- номер UDP/TCP-порта или ANY - dst_port = ANY -- аналогично src_port + filter_num = 0, -- номер фильтра (от 0 до 4 включительно) + enabled = 1, -- включен (1) / выключен (0) + ipproto = IPPROTO_TCP, -- IPPROTO_TCP, IPPROTO_UDP или ANY + src_ip = "140.82.33.182", -- строка с IPv4 или ANY + dst_ip = ANY, -- аналогично src_ip + src_port = 22, -- номер UDP/TCP-порта или ANY + dst_port = ANY -- аналогично src_port }, { filter_num = 1, @@ -70,18 +70,18 @@ local _config = { ## Архитектура Для того, чтобы собирать статистику максимально эффективно, -используется интерфейс ядра [eBPF](ebpf). Это даёт возможность -запускать код, подсчитывающий статистику, прямо в ядре. Кроме того, -для наибольшей производительности eBPF-код вешается на XDP (eXpress -Data Path), что позволяет получить доступ до пакета даже раньше, чем -он будет обработан сетевым стеком Linux'а. - -Основной код, который задействован в подсчёте статистики, написан на -Си (`ifstat_kern.c`). Процессом компиляции и инъекцией этого кода в -ядро занимается lua-скрипт, основанный на официальных байндингах -проекта [bcc](bcc) (это фреймворк, упрощающий процесс создания -утилит, использующих eBPF). Непосредственно компиляцией занимается -LLVM/Clang. +используется интерфейс ядра [eBPF][ebpf]. Это даёт возможность +запускать код, подсчитывающий необходимую статистику прямо в ядре. +Кроме того, для наибольшей производительности eBPF вешается на +XDP-хук (eXpress Data Path), что позволяет получить доступ до пакета +даже раньше, чем он будет обработан сетевым стеком ядра. + +Основной код, задействованный в фильтрации и подсчёте статистики, +написан на Си (`ifstat_kern.c`). Процессом компиляции и инъекцией +этого кода в ядро занимается lua-скрипт, основанный на официальных +байндингах проекта [bcc][bcc] (это фреймворк, упрощающий процесс +создания утилит, использующих eBPF). Непосредственно компиляцией +занимается LLVM/Clang. ## Почему я выбрал Lua в качестве вспомогательного языка? @@ -89,7 +89,7 @@ LLVM/Clang. написан на Си, всё остальное (парсинг конфигов и командной строки, инъекция eBPF, вычитка готовых данных, отправка данных по ubus) можно было написать на любом подходящем для этих задач - языке. + языке; 2. Проект bcc официально поддерживает нативный интерфейс (библиотеку libbcc) для инъекции eBPF в ядро и байндинги к нему @@ -97,7 +97,7 @@ LLVM/Clang. Python -- выбор сильно сужается; 3. Проект ubus предоставляет только нативный интерфейс и - Lua-байндинги. + Lua-байндинги; 4. Идея написать с нуля и поддерживать байндинги для bcc или ubus ля других языков откидывается сразу. |