MTU对环回接口的意义

时间:2014-12-11 20:39:30

标签: linux tcp linux-kernel ipc

我正在探索/基准测试各种IPC机制,以便在同一系统中的两个进程之间进行低延迟通信。我使用RHEL 6系统进行基准测试。

我目前正在通过环回来研究基于套接字的通信。由于它是环回设备,因此数据包甚至不会命中NIC。相反,loopback linux驱动程序将数据包环回到目的地。

然而,查看netstat -i的结果,我看到为环回定义了一个MTU。它的作用是什么以及对带宽的潜在影响?

Name  Mtu   Network       Address            Ipkts Ierrs    Opkts Oerrs  Coll
lo0   16384 localhost   ::1                   1738     -     1738     -     -

1 个答案:

答案 0 :(得分:0)

环回不是物理接口,但是tcp / ip堆栈仍然在其上运行很多操作。

为提高本地传输的性能,内核开发人员将其mtu从16 Kb提升至64 Kb。

请参阅Linux内核中的this commit及其基本原理:

  

环回当前mtu为16436字节,允许不超过3个MSS TCP   每帧分段,即48 KB。将mtu更改为64K允许TCP   堆栈以构建大型框架并显着减少堆栈开销。

     

大容量TCP传输的性能提升可高达30%,部分原因是因为我们现在有一个ACK消息用于两个64KB段,而较低的消息   达到/ proc / sys / net / ipv4 / tcp_reordering默认限制的概率。

--- a/drivers/net/loopback.c
+++ b/drivers/net/loopback.c
static void loopback_setup(struct net_device *dev)
{
-       dev->mtu                = (16 * 1024) + 20 + 20 + 12;
+       dev->mtu                = 64 * 1024;