flowspec
typedef struct _flowspec
{
int32 TokenRate; /* In Bytes/sec */
int32 TokenBucketSize; /* In Bytes */
int32 PeakBandwidth; /* In Bytes/sec */
int32 Latency; /* In microseconds */
int32 DelayVariation; /* In microseconds */
GUARANTEE
LevelOfGuarantee; /*
Guaranteed, Predictive, */
/* Best
Effort, etc. */
int32
CostOfCall; /* Reserved
for future use, */
/* must
be set to 0 now */
int32 NetworkAvailability; /* read-only: */
/*
1 if accessible, */
/* 0 if not */
} FLOWSPEC, FAR * LPFLOWSPEC;
Members
TokenRate
A token
bucket model is used to specify the rate at which permission to send
traffic (or credits) accrues. In the model, the token bucket has a maximum
volume, TokenBucketSize, and continuously fills at a certain rate TokenRate. If
the bucket contains sufficient credit, the application can send data and reduce
the available credit by that amount. If sufficient credits are not available,
the application must wait or discard the extra traffic.
A value of -1
in the members TokenRate and TokenBucketSize indicates that no rate-limiting is
in force. The TokenRate is expressed in bytes per second.
If an
application has been sending at a low rate for a period of time, it can send a
large burst of data all at once until it runs out of credit. Having done so, it
must limit itself to sending at TokenRate until its data burst is exhausted.
In video
applications, the TokenRate is typically the average bit rate peak to peak. In
constant rate applications, the TokenRate is equal to the PeakBandwidth.
TokenBucketSize
The TokenBucketSize
is expressed in bytes.
The
TokenBucketSize is the largest typical frame size in video applications. In
constant rate applications, the TokenBucketSize is chosen to accommodate small
variations.
PeakBandwidth
This member,
expressed in bytes/second, limits how fast packets may be sent back to back
from the application. Some intermediate systems can take advantage of this
information resulting in a more efficient resource allocation.
Latency
Latency is
the maximum acceptable delay between transmission of a bit by the sender and
its receipt by the intended receiver(s), expressed in microseconds. The precise
interpretation of this number depends on the level of guarantee specified in
the QOS request.
DelayVariation
This the
difference, in microseconds, between the maximum and minimum possible delay
that a packet will experience. This value is used by applications to determine
the amount of buffer space needed at the receiving side in order to restore the
original data transmission pattern.
LevelOfGuarantee
This is the
level of service being negotiated for. The GUARANTEE
The reason
for defining both predictive and guaranteed service is that predictive services
may achieve substantially better performance given the same level of network
resource usage, while guaranteed service provides the mathematical level of
certainty needed by selected applications. Specific providers may implement
none, one, or both of these services.
Best effort
service is just a hint to the service provider and should be always supported.
CostOfCall
This is just
a place holder for now and should always be set to 0 until we can come up with
a meaningful cost metric.
NetworkAvailability
Network
Availability - This is a read-only field for the transport provider to use in
indicating to the application whether or not the underlying media is currently
accessible or temporarily unavailable. The typical example for a temporarily
inaccessible network would be a wireless interface that has lost contact with
the base station (due, for example to terrain interference). Any change in this
value should result in an FD_QOS indication to applications that have
registered interest in same.