网络拥塞控制(八) 外传之如何测量TCP的拥塞窗口 - 海阔天空 - 博客园

网络拥塞控制(八) 外传之如何测量TCP的拥塞窗口

我们一直讲了许多种网络拥塞算法,这些一直都是理论上的算法,到底在实际中窗口的调整是怎么样的呢?对于一个连接来说,如何知道当前的拥塞窗口值是多少呢?

在Linux下,使用内核模块tcpprobe,可以得到TCP连接的参数,但是麻烦的是,该模块需要内核kprobes的支持,如果不怕麻烦的话,当然可以尝试下。我们希望的是能够不需要通过这么复杂的机制,就能够得到内核中TCP连接的参数。在翻遍了proc目录和内核的一些代码后,终于找到了我想要的方法:getsockopt()函数调用。

该选项是Linux平台所独有的,所以在很多书籍,包括《Unix网络编程》这种圣经级的书和Linux的man getsockopt手册中,都没有提到这个选项。

在内核的函数tcp_getsockopt的代码中,可以看到这个选项TCP_INFO,返回了几乎所有的参数,同时还有其他的许多参数可以得到一些其他的信息。具体每个参数的含义可以参考内核中的注释。

Code

1

void read_cwnd(int tcp_socket)

2

{

3

struct tcp_info info;

4

int length = sizeof(struct tcp_info);

5

6

if ( getsockopt( tcp_socket, SOL_TCP, TCP_INFO, (void *)&info, (socklen_t *)&length ) == 0 )

{

7

printf("%u %u %u %u %u %u %u %u %u %u %u %u\n",

8

info.tcpi_snd_cwnd,

9

info.tcpi_snd_ssthresh,

10

info.tcpi_rcv_ssthresh,

11

info.tcpi_rtt,

12

info.tcpi_rttvar,

13

info.tcpi_unacked,

14

info.tcpi_sacked,

15

info.tcpi_lost,

16

info.tcpi_retrans,

17

info.tcpi_fackets,

18

info.tcpi_ca_state,

19

info.tcpi_reordering

20

);

21

}

22

}

有了这个选项后,我们就不再停留在各种拥塞算法的理论层面上,就可以从实际中看到TCP的各种算法的优劣,比较有趣的内容就产生了。

网络拥塞控制(八) 外传之如何测量TCP的拥塞窗口

我们一直讲了许多种网络拥塞算法,这些一直都是理论上的算法,到底在实际中窗口的调整是怎么样的呢?对于一个连接来说,如何知道当前的拥塞窗口值是多少呢?

在Linux下,使用内核模块tcpprobe,可以得到TCP连接的参数,但是麻烦的是,该模块需要内核kprobes的支持,如果不怕麻烦的话,当然可以尝试下。我们希望的是能够不需要通过这么复杂的机制,就能够得到内核中TCP连接的参数。在翻遍了proc目录和内核的一些代码后,终于找到了我想要的方法:getsockopt()函数调用。

该选项是Linux平台所独有的,所以在很多书籍,包括《Unix网络编程》这种圣经级的书和Linux的man getsockopt手册中,都没有提到这个选项。

在内核的函数tcp_getsockopt的代码中,可以看到这个选项TCP_INFO,返回了几乎所有的参数,同时还有其他的许多参数可以得到一些其他的信息。具体每个参数的含义可以参考内核中的注释。

Code

1

void read_cwnd(int tcp_socket)

2

{

3

struct tcp_info info;

4

int length = sizeof(struct tcp_info);

5

6

if ( getsockopt( tcp_socket, SOL_TCP, TCP_INFO, (void *)&info, (socklen_t *)&length ) == 0 )

{

7

printf("%u %u %u %u %u %u %u %u %u %u %u %u\n",

8

info.tcpi_snd_cwnd,

9

info.tcpi_snd_ssthresh,

10

info.tcpi_rcv_ssthresh,

11

info.tcpi_rtt,

12

info.tcpi_rttvar,

13

info.tcpi_unacked,

14

info.tcpi_sacked,

15

info.tcpi_lost,

16

info.tcpi_retrans,

17

info.tcpi_fackets,

18

info.tcpi_ca_state,

19

info.tcpi_reordering

20

);

21

}

22

}

有了这个选项后,我们就不再停留在各种拥塞算法的理论层面上,就可以从实际中看到TCP的各种算法的优劣,比较有趣的内容就产生了。


相关文章

  • 文献综述--IP网络中单速率多播拥塞控制算法研究
  • 文献综述 毕业设计题目: IP 网络中单速率多播拥塞控制 IP 网络中单速率多播拥塞控制算法研究 一. 引言 今天,因特网应用,如网络视频会议.网络音频/视频广播.AOD /VOD .数据分发.多媒体远程教育.在线信息恢复.软件或代理缓存更 ...查看


  • 计科系本科毕业论文
  • 分类号 论文选题类型 U D C 编号 本科毕业论文(设计) 题 目 互联网传输控制协议研究 院 (系) 计算机科学系 专 业 计算机科学与技术 年 级 2007级 学生姓名 学 号 指导教师 二○一一年五月 作者声明 本人声明所呈交的论文 ...查看


  • 计算机网络内容整理
  • 第1章 概述 1. 分组交换:把较长的报文划分成较短的固定长度的数据段.每个数据段添加上首部构成分组. 2. 路由器:网络的核心部分,用于转发分组(存储转发). 3. 分类:按作用范围分为广域网(WAN ).局域网(LAN ).城域网(MA ...查看


  • 谢希仁计算机网络简答题答案
  • 谢希仁计算机网络简答题 1)从多方面比较电路交换.报文交换和分组交换的主要优缺点.P15 电路交换: 优点,数据延时短,数据保证顺序传输. 缺点,线路建立时间较长,另外,线路独占不利于提高线路的利用率. 报文交换: 优点,不需要建立连接 缺 ...查看


  • 通信网的组成
  • 通信网的组成(用户通信终端)(物理传输链路)(链路的汇聚点) 通信网分类(固定电话网)(移动通信网)(ATM网络)(局域网) 网络有(子网):(ATM网络)(X2.5分组数据网)(PSTN公用电话交换网)(ISDN综合业务数字网)(移动通信 ...查看


  • 网络协议族实验报告
  • 网络协议族分析实验报告 设计题目: 学生姓名: 系 别: 专 业: 班 级: 学 号: 指导教师: T cp/Ip协议分析 实验四 用ethereal 工具探究TCP 协议 一. 实验目的 分析TCP 协议 二. 实验环境 与因特网连接的计 ...查看


  • 网络协议分析复习资料
  • 1.应用层有哪些协议? 域名系统DNS: 文件传送协议FTP: 远程终端协议TELNET: 简单邮件传送协议SMTP: 超文本协议HTTP: 简单网络管理协议 SNMP: 邮件读取协议POP3和IMAP: 动态主机协议DHCP: 2.传输层 ...查看


  • 计算机网络原理课后习题答案
  • <计算机网络>(第四版) 谢希仁 第1章 概述 作业题1-03.1-06.1-10.1-13.1-20.1-22 1-03.试从多个方面比较电路交换.报文交换和分组交换的主要优缺点. 答:(1)电路交换 它的特点是实时性强,时延 ...查看


  • 计算机网络作业2-5
  • 计算机网络作业(第二章) 2-01 物理层要解决哪些问题?物理层的主要特点是什么? 答:物理层要解决的问题是: (1) 怎样才能在连接各种计算机的传输媒体上传输数据比特流: (2) 尽可能的屏蔽掉各种差异,是物理层上面的数据链路层感觉不到这 ...查看


热门内容