#linux #networking #linux-kernel #virtualization #iptables
#linux #сеть #linux-ядро #виртуализация #iptables
Вопрос:
Я сталкиваюсь со следующей ситуацией. У нас есть два сетевых пространства имен: ns1 и ns2. Они подключены через пары veth. ns1 содержит ovs, а ns2 содержит правила iptables. Пакеты поступают из порта ovs 1 в ns2 и проходят проверки iptable, а затем возвращаются в ns1. Пакеты находятся в ядре, и обработка выполняется быстро.
Поскольку правила iptables становятся все больше и больше, я думаю, что мы должны отделить ns2 как другой процесс ОС. Основная причина заключается в использовании нескольких ядер на компьютере. Подключите ns1, содержащие ovs, и ns2, содержащие правила iptables, через пару veth. Если я это сделаю, пакеты все равно останутся в ядре? И нет никаких проблем с производительностью, таких как прохождение границ процесса, границ пространства ядра / пользователя, нескольких копий одних и тех же пакетов?
Я немного поищу. Пространство ядра использует виртуальную память как пространство пользователя. Кажется, что некоторая область пространства ядра совместно используется несколькими процессами ОС и поддерживается физической оперативной памятью. Вот почему виртуальная сеть Linux работает быстро. Хотя пространства имен подключены через пары veth, аппаратное прерывание не задействовано. Я не уверен, что при прохождении пакетов через пары veth задействованы программные прерывания. Несмотря ни на что, пока один и тот же пакет остается в пространстве ядра, которое совместно используется несколькими процессами ОС, производительность должна быть хорошей. Разделение пространства имен iptables на другой процесс поможет в случае многоядерности.
Правильно ли это понимание?