2011-06-17 86 views
0

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

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

我愿意上传数据到服务器使用TCP(我可以使用Iperf工具)。挂钩系统调用我想使用SystemTap。这个工具可以告诉我什么时候调用一个特定的系统调用。

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

  1. 呼吁包的第一个TCP级功能(是* tcp_sendmsg *);
  2. 最后一个TCP级别的函数需要通过它的IP网络级别的数据包?

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

+0

也许有点偏离主题,但如果你想在TCP连接上添加一些优先级,你可以做到这一点,与QoS管理 看看[这里](http://www.prout.be/qos/QoS-connection-tuning-HOWTO.html)或那里[Linux高级路由和流量控制](http://lartc.org/howto/ ) – 2011-06-17 11:59:28

回答

1
  1. 要求数据包的第一个TCP级别函数是来自'net/ipv4/tcp.c'系统源文件的* tcp_sendmsg *。
  2. 要求数据包的最后一个TCP级别函数是来自'net/ipv4/tcp_output.c'系统源文件的* tcp_transmit_skb *。

了对来自Linux的TCP源文件信息的一个有趣的网站是这样的:tcp_output