aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Nazaryev <sergey@nazaryev.ru>2018-11-06 16:41:04 +0000
committerSergey Nazaryev <sergey@nazaryev.ru>2018-11-06 16:54:01 +0000
commita81fb2b2681fe901079aa380b5008252e175387c (patch)
treec3b4b49c4ea39fb7fd5b142496ef8ff6dd14d328
parent3016157980dbe81b7d61d65f61a3c2f749995aef (diff)
downloadifstat-a81fb2b2681fe901079aa380b5008252e175387c.zip
ifstat-a81fb2b2681fe901079aa380b5008252e175387c.tar.gz
ifstat-a81fb2b2681fe901079aa380b5008252e175387c.tar.bz2
README.md: фиксы грамматики
-rw-r--r--README.md44
1 files changed, 22 insertions, 22 deletions
diff --git a/README.md b/README.md
index 705eac8..624feff 100644
--- a/README.md
+++ b/README.md
@@ -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
ля других языков откидывается сразу.