Я масштабирую устройство проверки безопасности. Шаг ограничения скорости — это однопоточный процесс, который анализирует и извлекает данные из сетевых потоков.
В качестве краткосрочной цели я хотел бы масштабировать это путем балансировки нагрузки от физического интерфейса захвата до внутренних фиктивных или ответвляющихся интерфейсов, а затем запускать несколько экземпляров однопоточного процесса, используя их в качестве входных данных.
Для каждого экземпляра однопоточного процесса требуются полные сетевые потоки (т. е. соответствующий кортеж — TCP или UDP). Меня не волнует трафик после того, как он попадет на фиктивные интерфейсы - затем он отбрасывается, поэтому мне не нужно
беспокоиться о обратных путях или о чем-либо, связанном с этим.
После некоторого чтения я думаю, что хеширование на основе потока и действие перенаправления tc-mirred могут быть решением, которое я ищу.
Итак, я зашел так далеко:
# Настраиваем интерфейсы
ФИЗ = "eth1"
INT_COUNT=4 # Получено из числа ядер процессора
# Создадим несколько фиктивных интерфейсов
для i в {1..$INT_COUNT}
сделать ip-ссылку добавить фиктивный тип $i фиктивный
ip link set dummy$i up
сделано
# Создаем qdisc
tc qdisc add dev $PHY вход
# Фильтр на основе кортежа потока. Классы создаются автоматически благодаря делителю
фильтр tc add dev $PHYS parent ffff: handle 1 \
хеш-ключи потока src, dst, proto, proto-src, proto-dst \
делитель $INT_COUNT
# Теперь как-нибудь применим действие перенаправления к созданным классам
# для каждого из фиктивных интерфейсов
для i в {1..$INT_COUNT}
do tc filter add dev $PHYS parent ffff: протокол ip u32 соответствует u32 0 0 \
действие отражено выход перенаправление dev dummy$i
сделано
Это последняя часть, которую я никак не могу понять.
Классы создаются автоматически с оператором делителя в фильтрации. Поскольку делитель использует модуль хеша, я должен получить классы, на которые я могу ссылаться.
Как я могу сказать "класс "N", иди к манекену N"?
Я много читал об этом, но я думаю, что есть какая-то ключевая часть, которую я не понимаю. Я думаю, что мне нужен поток в действии, но я не уверен.
Любые советы или предложения по этому поводу будут очень признательны.