Win网络编程里的QoS结构,看得一头雾水..
typedef struct _flowspec
{
ULONG TokenRate; /* In Bytes/sec */
ULONG TokenBucketSize; /* In Bytes */
ULONG PeakBandwidth; /* In Bytes/sec */
ULONG Latency; /* In microseconds */
ULONG DelayVariation; /* In microseconds */
SERVICETYPE ServiceType;
ULONG MaxSduSize; /* In Bytes */
ULONG MinimumPolicedSize; /* In Bytes */
} FLOWSPEC, *PFLOWSPEC, * LPFLOWSPEC;
下面是书的原文:
///////////////////////////////////////////////////////////////////////////////////////
TokenRate字段定义了数据的传输速度,单位是“字节/秒”。Token是“令牌”的意思。作为一个应用程序,它可以按此速度传输数据,但假如由于某种原因,它需要用一个较低的速度传输,便可积累下额外的令牌,以便更多的数据能在以后传输出去。
然而,一个应用程序可累积的令牌数量要受PeakBandwidth的制约。同时,令牌本身的尺寸也要受到TokenBucketSize字段的限制。
通过对令牌总量加以限制,便可防止不活动的数据流积下大量令牌。因为这样极易造成可用带宽的极大浪费。尽管数据流可在一定时间内,积累传输所需的“信用点”(令牌),但最多只能积累到由TokenBucketSize的大小,而且由于它们的“峰值传输”受到PeakBandwidth的限制,所以传输控制以及网络设备资源的完整性得到了有效保证。之所以说传输控制得到了保证,是由于数据流不能一次发送任意多的数据。而网络设备资源完整性得到了保证,是由于这些设备不会受到突发性的“峰值”传输量的冲击
由于采取了这些限制措施,应用程序只有在累积了足够的“信用点”之后,才能开始传输数据。假如没有达到对信用点数量的要求,那么对应用程序而言,要么等积累到足够多的信用点再发送数据,要么完全放弃数据的传输。通信控制(TC)模块负责决定对于等待许久都没有发送出去的数据,该如何进行处理。因此,在设计应用程序的时候,就应注意将TokenRate请求设置成一个合理的数量
/////////////////////////////////////////////////////////////////////////////////////////
这是书的源代码对这结构的赋值例子
const FLOWSPEC flowspec_g711 = {8500,
680,
17000,
QOS_NOT_SPECIFIED,
QOS_NOT_SPECIFIED,
SERVICETYPE_CONTROLLEDLOAD,
340,
340};
然后我想问下
TokenRate是代表最大传输速率还是最小传输速率??
TokenBucketSize是单个令牌的大小,还是所有令牌大小
PeakBandwidth;这个又是什么意思??令牌数??它的单位是Bytes/sec呀
问题点数:20、回复次数:4Top
1 楼ljhjason(小鬼)回复于 2005-01-14 16:15:45 得分 0
upTop
2 楼click2004(大家好)回复于 2005-01-14 17:18:55 得分 10
关注 交流qq 103225301Top
3 楼ljhjason(小鬼)回复于 2005-01-23 15:36:45 得分 0
upTop
4 楼karonhome(天天开心)回复于 2005-01-24 01:01:37 得分 10
markTop




