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 时,通过调用 GetPerTcp6ConnectionEStatsGetPerTcpConnectionEStats 函数来检索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 统计信息定义的条目:

术语 说明
FastRetran tcpEStatsStackFastRetran
超时 tcpEStatsPerfTimeouts
SubsequentTimeouts tcpEStatsStackSubsequentTimeouts
CurTimeoutCount tcpEStatsStackCurTimeoutCount
AbruptTimeouts tcpEStatsStackAbruptTimeouts
PktsRetrans tcpEStatsPerfSegsRetrans
BytesRetrans tcpEStatsPerfOctetsRetrans
DupAcksIn tcpEStatsStackDupAcksIn
SacksRcvd tcpEStatsStackSACKsRcvd
SackBlocksRcvd tcpEStatsStackSACKBlocksRcvd
CongSignals tcpEStatsPerfCongSignals
PreCongSumCwnd tcpEStatsPathPreCongSumCwnd
PreCongSumRtt tcpEStatsPathPreCongSumRTT
PostCongSumRtt tcpEStatsPathPostCongSumRTT
PostCongCountRtt tcpEStatsPathPostCongCountRTT
EcnSignals tcpEStatsPathECNsignals
EceRcvd tcpEStatsPathCERcvd
SendStall tcpEStatsStackSendStall
QuenchRcvd 没有映射到此成员。
RetranThresh tcpEStatsPathRetranThresh
SndDupAckEpisodes tcpEStatsPathDupAckEpisodes
SumBytesReordered tcpEStatsPathSumOctetsReordered
NonRecovDa tcpEStatsPathNonRecovDA
NonRecovDaEpisodes tcpEStatsPathNonRecovDAEpisodes
AckAfterFr 没有映射到此成员。
DsackDups tcpEStatsStackDSACKDups
SampleRtt tcpEStatsPathSampleRTT
SmoothedRtt tcpEStatsPerfSmoothedRTT
RttVar tcpEStatsPathRTTVar
MaxRtt tcpEStatsPathMaxRTT
MinRtt tcpEStatsPathMinRTT
SumRtt tcpEStatsPathSumRTT
CountRtt tcpEStatsPathCountRTT
CurRto tcpEStatsPerfCurRTO
MaxRto tcpEStatsPathMaxRTO
MinRto tcpEStatsPathMinRTO
CurMss tcpEStatsPerfCurMSS
MaxMss tcpEStatsStackMaxMSS
MinMss tcpEStatsStackMinMSS
SpuriousRtoDetections tcpEStatsStackSpuriousRtoDetected
 

TCP_ESTATS_FINE_RTT_ROD_v0 结构的成员提供与 TCP_ESTATS_PATH_ROD_v0 结构的 RttVarMaxRttMinRttSumRtt 成员类似的数据。 但是, TCP_ESTATS_FINE_RTT_ROD_v0结构的类似 成员的时间以微秒为单位报告。

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
标头 tcpestats.h

另请参阅

GetPerTcp6ConnectionEStats

GetPerTcpConnectionEStats

TCP_ESTATS_FINE_RTT_ROD_v0

TCP_ESTATS_TYPE