我正在尝试跟踪内核中特定TCP连接的拥塞窗口。最简单的方法,我假设是使用printk
或printf
并打印出相应的变量,我认为它在内核中是snd_cwnd
。
有更标准的方法吗?理想情况下,我想观察特定TCP连接的各种重要TCP参数如何变化。
答案 0 :(得分:0)
你使用printk是非常正确的,转储特定的数据实际上printk是最好的选择。
要观察特定TCP连接的参数,您可以获取netfilter挂钩的帮助。使用netfilter内核模块(http://fcns.eu/2010/02/15/netfilter-hooks/),您可以跟踪特定连接,并可以检查您想要的每个TCP包。
答案 1 :(得分:0)
printk仅在您使用低速传输时才可用。使用快速传输时,这些参数的更改次数很多,并且会溢出printk使用的dmesg缓冲区。在过去,我讨论了一些代码,当这些参数发生变化时,在内核和用户空间之间使用relayfs缓冲区。现在有一个systemtap对于以有效的方式获取内部信息非常有用。