我正面临以下情况。我们有两个网络名称空间:ns1和ns2。它们通过veth对连接。 ns1持有ovs,ns2持有iptables规则。数据包从ovs端口1流入ns2,并通过iptable检查,然后返回ns1。数据包在内核中,处理速度很快。
随着iptables规则变得越来越大,我认为我们将把ns2分离为另一个os进程。主要原因是在计算机上使用多个内核。通过veth对连接ns1保持ovs和ns2保持iptables规则。如果这样做,数据包是否仍保留在内核中?并没有诸如遍历进程边界,内核/用户空间边界,同一数据包的多个副本之类的性能损失吗?
我搜索了一下。内核空间像用户空间一样使用虚拟内存。内核空间的某些区域似乎由多个os进程共享,并由物理RAM备份。这就是为什么linux虚拟网络速度很快的原因。尽管名称空间是通过第ve对连接的,但不涉及硬件中断。我不确定当数据包通过第ve对时是否涉及软件中断。只要同一包被多个os进程共享,保留在内核空间中,无论如何,性能都应该不错。在多核的情况下,将iptables命名空间分成不同的过程将有所帮助。
这种理解正确吗?