TCP_ESTATS_PATH_ROD_v0 结构 (tcpestats.h)
TCP_ESTATS_PATH_ROD_v0结构包含有关 TCP 连接的网络路径度量的扩展 TCP 统计信息的只读动态信息。
语法
typedef struct _TCP_ESTATS_PATH_ROD_v0 {
ULONG FastRetran;
ULONG Timeouts;
ULONG SubsequentTimeouts;
ULONG CurTimeoutCount;
ULONG AbruptTimeouts;
ULONG PktsRetrans;
ULONG BytesRetrans;
ULONG DupAcksIn;
ULONG SacksRcvd;
ULONG SackBlocksRcvd;
ULONG CongSignals;
ULONG PreCongSumCwnd;
ULONG PreCongSumRtt;
ULONG PostCongSumRtt;
ULONG PostCongCountRtt;
ULONG EcnSignals;
ULONG EceRcvd;
ULONG SendStall;
ULONG QuenchRcvd;
ULONG RetranThresh;
ULONG SndDupAckEpisodes;
ULONG SumBytesReordered;
ULONG NonRecovDa;
ULONG NonRecovDaEpisodes;
ULONG AckAfterFr;
ULONG DsackDups;
ULONG SampleRtt;
ULONG SmoothedRtt;
ULONG RttVar;
ULONG MaxRtt;
ULONG MinRtt;
ULONG SumRtt;
ULONG CountRtt;
ULONG CurRto;
ULONG MaxRto;
ULONG MinRto;
ULONG CurMss;
ULONG MaxMss;
ULONG MinMss;
ULONG SpuriousRtoDetections;
} TCP_ESTATS_PATH_ROD_v0, *PTCP_ESTATS_PATH_ROD_v0;
成员
FastRetran
类型: ULONG
快速重新传输算法的调用数。
Timeouts
类型: ULONG
重新传输计时器退避乘数等于 1 时,重新传输超时已过期的次数。
SubsequentTimeouts
类型: ULONG
重新传输计时器翻倍后,重新传输超时已过期的次数。
有关详细信息,请参阅下面的备注中讨论的 RFC 2988 的第 5.5 节。
CurTimeoutCount
类型: ULONG
重新传输超时已过期且未收到新数据的确认的当前次数。
当确认新数据并针对 RFC 2988 第 5.5 节的每次调用递增时, CurTimeoutCount 成员将重置为零。
AbruptTimeouts
类型: ULONG
在没有紧接重复确认或其他拥塞指示之前发生的超时数。 突然超时表示路径丢失了整个数据或确认窗口。
(显式拥塞通知(例如,) )之前出现重复确认或其他拥塞信号的超时不计为突然,并且可能已通过更复杂的快速重新传输算法来避免。
PktsRetrans
类型: ULONG
传输的段数,其中包含至少一些重新传输的数据。
BytesRetrans
类型: ULONG
重新传输的字节数。
DupAcksIn
类型: ULONG
收到的重复 ACK 数。
SacksRcvd
类型: ULONG
收到的选择性确认 (SACK) 选项的数目。
SackBlocksRcvd
类型: ULONG
SACK 选项中 (收到的 SACK 块数) 。
CongSignals
类型: ULONG
由于各种形式的拥塞信号(包括快速重新传输、显式拥塞通知 (ECN) 和超时)而导致的乘法向下拥塞窗口调整数。 此成员汇总了调用乘法减少 (MD) 累加增加乘法减少部分的所有事件 (AIMD) 拥塞控制,因此是拥塞窗口受到拥塞影响的最佳指标。
请注意,重新传输超时通过设置慢启动阈值大小以乘法递减窗口,并包含在 CongSignals 成员中存储的值中。 为了尽量减少由于无序段而导致的虚假拥塞指示, CongSignals 成员与快速重新传输算法一起递增。
PreCongSumCwnd
类型: ULONG
每次收到拥塞信号时捕获的拥塞窗口值之和(以字节为单位)。
每次 递增 CongSignals 成员时,都会更新此成员,这样 PreCongSumCwnd 成员中的更改除以 CongSignals 成员中的更改,就是在拥塞信号之前某个间隔) (的平均窗口。
PreCongSumRtt
类型: ULONG
在接收拥塞信号之前,网络往返时间的最后一个样本 (RTT) 的总和(以毫秒为单位)。 RTT 的最后一个示例存储在 SampleRtt 成员中。
每次递增 CongSignals 成员时,PreCongSumRtt 成员都会更新,这样 PreCongSumRtt 中的更改除以 CongSignals 成员中的更改,就是在拥塞信号之前某个间隔) 的平均 RTT (。
PostCongSumRtt
类型: ULONG
每个拥塞信号后,存储在 SampleRtt 成员中的第一个网络 RTT (样本的总和) (以毫秒为单位)。
PostCongSumRtt 成员中的更改除以 PostCongCountRtt 成员中的更改,是恰好在拥塞信号后某个间隔) 的平均 RTT (。
PostCongCountRtt
类型: ULONG
PostCongSumRtt 成员中包含的 RTT 样本数(以字节为单位)。
PostCongSumRtt 成员中的更改除以 PostCongCountRtt 成员中的更改,是恰好在拥塞信号后某个间隔) 的平均 RTT (。
EcnSignals
类型: ULONG
通过 ECN 传递到 TCP 发送方的拥塞信号数。
这通常是包含回声拥塞的段数
经验丰富的 (ECE) 位,但也包括 ECN nonce 检查 或其他显式拥塞信号失败的段。
EceRcvd
类型: ULONG
使用具有拥塞的 IP 标头接收的段数, (CE) 标记。
SendStall
类型: ULONG
被视为拥塞信号的接口停止数或其他发送方本地资源限制。
QuenchRcvd
类型: ULONG
保留供将来使用。 此成员始终设置为零。
RetranThresh
类型: ULONG
触发快速重新传输所需的重复确认数。
请注意,尽管这在传统的 Reno TCP 实现中是恒定的,但它在许多较新的 TCP 实现中是自适应的。
SndDupAckEpisodes
类型: ULONG
先前的确认不是重复时发送的重复确认数。 这是连续一系列重复确认已发送的次数。
这表示从远程 TCP 终结点到靠近 TCP 终结点的路径上丢失或重新排序的数据段数。
SumBytesReordered
类型: ULONG
SND 的金额之和。UNA 推进确认, 结束一个重复的情节, 没有重新传输。
请注意 ,SumBytesReordered 成员中的更改除以 NonRecovDaEpisodes 成员中的更改是估计某个间隔内的平均重新排序距离。
NonRecovDa
类型: ULONG
由于 ACK 先于到达 RetranThresh 的重复确认数, (或 SACKS) 未触发快速重新传输的重复确认数。
请注意, NonRecovDa 成员中的更改除以 NonRecovDaEpisodes 成员中的更改是估计某个间隔内段的平均重新排序距离。
NonRecovDaEpisodes
类型: ULONG
由于 ACK 先于到达 RetranThresh 的重复确认次数之前,未触发快速重新传输的重复确认剧集数。
AckAfterFr
类型: ULONG
保留供将来使用。 此成员始终设置为零。
DsackDups
类型: ULONG
D-SACK 块向本地主机报告的重复段数。
SampleRtt
类型: ULONG
用于计算重新传输计时器 (RTO) 的最新原始网络往返时间度量(以毫秒为单位)。
SmoothedRtt
类型: ULONG
用于计算 RTO 的平滑往返时间(以毫秒为单位)。
RttVar
类型: ULONG
用于计算 RTO 的往返时间变化(以毫秒为单位)。
MaxRtt
类型: ULONG
最长采样往返时间(以毫秒为单位)。
MinRtt
类型: ULONG
最小采样往返时间(以毫秒为单位)。
SumRtt
类型: ULONG
所有采样往返时间的总和(以毫秒为单位)。
请注意, SumRtt 成员中的更改除以 CountRtt 成员中的更改是平均 RTT,在输入间隔内统一求平均值。
CountRtt
类型: ULONG
SumRtt 成员中包含的往返时间样本数。
CurRto
类型: ULONG
重新传输计时器的当前值(以毫秒为单位)。
MaxRto
类型: ULONG
重新传输计时器的最大值(以毫秒为单位)。
MinRto
类型: ULONG
重新传输计时器的最小值(以毫秒为单位)。
CurMss
类型: ULONG
当前最大段大小 (MSS) (以字节为单位)。
MaxMss
类型: ULONG
最大 MSS,以字节为单位。
MinMss
类型: ULONG
最小 MSS,以字节为单位。
SpuriousRtoDetections
类型: ULONG
已因重新传输超时而重新传输的确认段数。
注解
TCP_ESTATS_PATH_ROD_v0 结构用作 Windows Vista 及更高版本上可用的 TCP 扩展统计信息功能的一部分。
TCP_ESTATS_PATH_ROD_v0定义为结构版本 0,用于获取有关 TCP 连接的网络路径度量的只读动态信息。 建立连接后,此信息可用。
在 EstatsType 参数中传递 TcpConnectionEstatsPath 时,通过调用 GetPerTcp6ConnectionEStats 或 GetPerTcpConnectionEStats 函数来检索TCP_ESTATS_PATH_ROD_v0结构。 需要启用扩展 TCP 统计信息才能检索此结构。
路径 MTU 发现中的 IETF RFC 1191 中详细介绍了路径 MTU 发现和最大段大小。 有关详细信息,请参阅 http://www.ietf.org/rfc/rfc1191.txt。
TCP 拥塞控制和拥塞控制算法在 TCP 拥塞控制上的 IETF RFC 2581 中进行了详细介绍。 有关详细信息,请参阅 http://www.ietf.org/rfc/rfc2581.txt。
有关 TCP 的选择性确认扩展 (SACK) 选项的 IETF RFC 2883 中详细介绍了 SACK 和 SACK 选项的扩展。 有关详细信息,请参阅 http://www.ietf.org/rfc/rfc2883.txt。
计算 TCP 的重新传输计时器的 IETF RFC 2988 中详细介绍了 TCP 重新传输计时器 (RTO) 和平滑的往返时间 (RTT) 。 有关详细信息,请参阅 http://www.ietf.org/rfc/rfc2988.txt。
IETF RFC 2581 中详细介绍了 IP 中的显式拥塞通知 (ECN) 。 有关详细信息,请参阅 http://www.ietf.org/rfc/rfc3168.txt。
此结构的成员在 TCP 扩展统计信息 MIB 上的 IETF RFC 中定义。 有关详细信息,请参阅 http://www.ietf.org/rfc/rfc4898.txt。
下面是 将 TCP_ESTATS_PATH_ROD_v0 结构中的成员映射到 RFC 4898 中为扩展 TCP 统计信息定义的条目:
TCP_ESTATS_FINE_RTT_ROD_v0 结构的成员提供与 TCP_ESTATS_PATH_ROD_v0 结构的 RttVar、MaxRtt、MinRtt 和 SumRtt 成员类似的数据。 但是, TCP_ESTATS_FINE_RTT_ROD_v0结构的类似 成员的时间以微秒为单位报告。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
标头 | tcpestats.h |