【问题标题】:Measuring TCP delay from Linux kernel从 Linux 内核测量 TCP 延迟
【发布时间】:2011-09-17 03:14:45
【问题描述】:

TCP 不会优先考虑 IP 等流量。当打开大量 TCP 后台连接正在上传数据时(例如当 BitTorrent 在后台播种时)特定套接字可能会出现延迟,因为 TCP 一次只会选择一个套接字将其数据包发送到 IP 级别。因此,除了许多其他连接之外,特定的套接字必须等待轮到它,而没有任何优先级导致延迟。

我目前正在做一些实验,并试图测量 TCP 在这种拥塞情况下产生的延迟。因为这种延迟发生在传输 (TCP) 级别,所以我正在考虑通过挂钩使用某些 Linux 系统调用的精确时刻来精确测量延迟。

我愿意使用 TCP 将数据上传到服务器(我可以使用Iperf 工具)。为了挂钩系统调用,我想使用SystemTap。这个工具可以告诉我调用特定系统调用的确切时间。

我想知道发送数据包时使用的两个系统调用的名称:

  1. 为数据包调用的第一个 TCP 级别函数(是 tcp_sendmsg);
  2. 为将数据包传递到 IP 网络层的数据包调用的最后一个 TCP 层函数?

调用这两个系统函数的时刻之间的差异(delta)是我想知道的延迟。

【问题讨论】:

标签: tcp linux-kernel hook delay systemtap


【解决方案1】:
  1. 为数据包调用的第一个 TCP 级别函数是来自“net/ipv4/tcp.c”系统源文件的 *tcp_sendmsg*。
  2. 为数据包调用的最后一个 TCP 级别函数是来自“net/ipv4/tcp_output.c”系统源文件的 *tcp_transmit_skb*。

一个有趣的站点,其中包含有关 Linux 中 TCP 源文件的信息:tcp_output

【讨论】:

    猜你喜欢
    • 2016-11-27
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 2021-01-28
    • 2013-07-13
    • 2017-12-23
    相关资源
    最近更新 更多