通过veth对穿越两个不同网络名称空间中的两个进程时,以太网数据包是否保留在linux内核中?

时间:2019-04-24 04:55:57

标签: linux networking linux-kernel virtualization iptables

我正面临以下情况。我们有两个网络名称空间: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命名空间分成不同的过程将有所帮助。

这种理解正确吗?

0 个答案:

没有答案