在 Linux 上提取 TCP 往返时间 (RTT) 估计

2023-11-21

我有在 Ubuntu 上运行的 apache 服务器。客户端连接并下载图像。我需要提取底层 TCP 连接的 RTT 估计。有没有办法做到这一点?也许像在调试模式下运行我的 tcp 堆栈以让它在某处记录此信息之类的东西?

请注意,我不想运行 tcpdump 并从记录的跟踪中提取 RTT!我需要 TCP 堆栈的 RTT 估计(显然这是您可以通过 TCP_INFO 套接字选项获得的信息的一部分)。基本上需要像 tcpprob (kprobe) 这样的东西来插入一个钩子并记录每个传入数据包(或每次更改)的 TCP 连接的估计 RTT。

UPDATE:

我找到了解决方案。 rtt、拥塞窗口等可以使用 tcpprobe 进行记录。我在下面发布了一个答案。


这可以在不需要任何额外的内核模块的情况下使用ss命令(部分iproute包),它可以提供有关打开套接字的详细信息。它不会显示每个数据包,但大部分信息是通过多个数据包计算得出的。例如。列出当前打开的 TCP (t选项)套接字和相关的内部 TCP 信息(i)信息——包括拥塞控制算法,rtt, cwnd etc:

ss -ti

以下是一些输出示例:

State       Recv-Q Send-Q        Local Address:Port        Peer Address:Port
ESTAB       0      0             192.168.56.102:ssh        192.168.56.1:46327
  cubic wscale:6,7 rto:201 rtt:0.242/0.055 ato:40 mss:1448 rcvmss:1392
advmss:1448 cwnd:10 bytes_acked:33169 bytes_received:6069 segs_out:134
segs_in:214 send 478.7Mbps lastsnd:5 lastrcv:6 lastack:5 
pacing_rate 955.4Mbps rcv_rtt:3 rcv_space:28960
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Linux 上提取 TCP 往返时间 (RTT) 估计 的相关文章

随机推荐

  • 如何使 Flexbox 底部元素的内容为其容器的 100% 高度

    如果我制作一个具有 2 个子项和列流的 Flexbox 并将第二个子项设置为flex grow 1第二个子项扩展以填充弹性盒 这有效 ps 不想让示例与 safari 支持变得混乱 所以使用 Chrome 或 Firefox box siz
  • 广播意图回调:result=CANCELLED forIntent

    我有一个移动应用程序 它注册到 c2dm 服务器 我有一个服务器向我的应用程序发送消息以推送通知 服务器从 google c2dm 接收到 ok 结果代码 在 LogCat 中 我看到我的应用程序收到了消息 但立即产生了我在帖子中遇到的错误
  • Google Apps 脚本的 Jdbc 连接错误

    我创建了一个 Google Cloud Project MySQL 数据库 与 Google Apps 脚本提供的 Jdbc 服务结合使用 连接一切都按计划进行 我基本上按照文档中的方式进行连接 var conn Jdbc getCloud
  • 创建网站的移动版本

    我正在寻找创建我们网站 网络应用程序的移动版本 有什么好方法可以提供最好的 功能最全的版本 创建它的部分原因是而不是 iPhone 应用程序 所以我想提供一个 iPhone Web 应用程序 充分利用 iPhone 版本的 WebKit 因
  • 嵌套 if 语句和“&&”运算符

    if a b c d doSomething if a if b if c if d doSomething 这两者之间有 任何 性能差异吗 例如 当a 变为0的情况下 它会继续运行第一个if语句中的b c 和d 吗 或者它的工作方式与第二
  • c 中右值存储在哪里?

    在C中 我有这段代码 int a a 10 5 3 我想问 10 5 3 存放在哪里 据我所知 a位于堆栈上 怎么样 10 5 3 这个右值是如何计算的 通常 右值 存储 在程序本身内 换句话说 编译器本身 在程序运行之前 计算 10 5
  • 为CDK中的资源添加条件

    我创建了一个将部署在多个区域的 CDK 堆栈 其中一个构造只能部署在一个区域 在 Cloudformation 中 我只需向资源添加一个条件 但我还没有找到一种方法来对 CDK 构造执行类似的操作 可以定义一个CfnCondition并将其
  • 精确控制 GLSL 中的纹理位

    我正在尝试使用 OpenGL 和 GLSL 实现八叉树遍历方案 并且希望将数据保留在纹理中 虽然纹理数据有多种格式可供选择 不同大小的浮点数和整数 但我在弄清楚是否有一种方法可以更精确地控制位 从而实现更高的效率和紧凑的存储方面遇到了一些麻
  • 如何计算jquery中mousedown事件期间的时间?

    我试图在 mousedown up 事件上的一个按钮上执行 2 个不同的功能 但它不起作用 因为我无法检测 mousedown 事件的时间 var flag ClikerButton mousedown function e if mous
  • 获取目录中文件的数量

    如何统计目录中的文件数 我在类参考中找不到任何相关内容NSFileManager contentsOfDirectoryAtPath error 返回一个NSArray 只需发送count到数组
  • LLDB (Swift):将原始地址转换为可用类型

    是否有一个 LLDB 命令可以将原始地址转换为可用的 Swift 类 例如 lldb po 0x7df67c50 as MKPinAnnotationView 我知道这个地址指向 MKPinAnnotationView 但它不在我可以选择的
  • 为什么 pandas DataFrame 可以互相改变?

    我试图保留 pandas DataFrame 的副本 以便我可以在保存原始数据的同时对其进行修改 但是当我修改副本时 原始数据框也会发生变化 前任 df1 pd DataFrame col1 a b c d col2 1 2 3 4 df1
  • onCompleted 可以与 useMutation 一起使用吗?

    我在 React 项目中使用 useMutation 钩子 突变运行成功 但之后未达到 onCompleted 我已在突变中将notifyOnNetworkStatusChange 设置为true 但这似乎没有帮助 const create
  • OnClickListener - 事件的 x,y 位置?

    我有一个从 View 派生的自定义视图 我希望在单击视图时收到通知 以及单击发生的 x y 位置 长按也是如此 看起来像这样做 我需要覆盖onTouchEvent 有没有办法从事件的 x y 位置OnClickListener相反 但是 如
  • map_partitions的返回值是多少?

    dask API 表示 map partition 可用于 在每个 DataFrame 分区上应用 Python 函数 根据此描述并根据 map 的通常行为 我期望 map partitions 的返回值是 类似于 一个长度等于分区数量的列
  • 找出最新术语和第二个最新术语之间的差异

    表的结构就像 create table events event type integer not null value integer not null time timestamp not null unique event type
  • Flutter 无法从剪贴板读取

    我来询问一个关于 Flutter 和 Future 的非常具体的问题 并等待机制 这似乎有效 但我的剪贴板在使用可编辑文本字段操作时并没有真正起作用 即使遵循 Google 关于实现的建议 这是我的粘贴代码 onPressed async
  • 如何在 IE(9+) 和 Safari (Pad) 中播放带有 HTML5 音频的 .m4a?

    我需要在 IE 9 和 Safari iPad iPhone 中播放 m4a 文件 在 iPhone 上录制 我在设置正确的 MIME 类型时遇到问题 为了在 IE10 中播放 我需要设置audio mp4但对于 Safariaudio a
  • 什么是正则表达式平衡组?

    我刚刚读到一个关于如何在双花括号内获取数据的问题 这个问题 然后有人提出了平衡组 我仍然不太确定它们是什么以及如何使用它们 我通读了平衡组定义 但解释很难理解 而且我对我提到的问题仍然很困惑 有人可以简单解释一下平衡组是什么以及它们有什么用
  • 在 Linux 上提取 TCP 往返时间 (RTT) 估计

    我有在 Ubuntu 上运行的 apache 服务器 客户端连接并下载图像 我需要提取底层 TCP 连接的 RTT 估计 有没有办法做到这一点 也许像在调试模式下运行我的 tcp 堆栈以让它在某处记录此信息之类的东西 请注意 我不想运行 t