【问题标题】:Significance of MTU for loopback interfaceMTU对环回接口的意义
【发布时间】:2014-12-11 20:39:29
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: linux tcp linux-kernel ipc


    【解决方案1】:

    loopback 不是物理接口,但 tcp/ip 堆栈仍然在其上运行大量操作。

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

    参见 Linux 内核中的this commit 及其原理:

    16436 字节的环回当前 mtu 允许不超过 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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-23
      • 2016-03-01
      • 2011-09-11
      • 1970-01-01
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多