Таблица Краткое описание сообщений об ошибках - часть 13
Структура QOS в WinSock 2 описана в файле Winsock2.h и представлена ниже.
typedef enum
{
BestEffortService,
ControlledLoadService,
PredictiveService,
GuaranteedService
} GUARANTEE;
typedef struct _flowspec
{
int32 |
TokenRate; |
/* В байтах/сек */ |
int32 |
TokenBucketSize; |
/* В байтах */ |
int32 |
PeakBandwidth; |
/* В байтах/сек */ |
int32 |
Latency; |
/* В микросекундах */ |
int32 |
DelayVariation; |
/* В микросекундах */ |
GUARANTEE LevelOfGuarantee;
int32 |
CostOfCall; |
/* Зарезервировано для будущего использования, должно быть = 0 */ |
int32 |
NetworkAvailability |
/* только для чтения: 1, если есть доступ, 0, если нет */ |
} FLOWSPEC, FAR * LPFLOWSPEC;
typedef struct _QualityOfService
{
FLOWSPEC |
SendingFlowspec; |
/* Спецификация потока для данных */ |
|
|
/* Посылка */ |
FLOWSPEC |
ReceivingFlowspec; |
/* Спецификация потока для данных */ |
|
|
/* Прием */ |
WSABUF |
ProviderSpecific; |
/* Дополнительный провайдер */ |
|
|
/* Специфические параметры */ |
} QOS, FAR * LPQOS;
Определения:
LevelOfGuarantee |
Согласуемый уровень сервиса. Определены четыре уровня: гарантированный, предсказуемый, контролируемая загрузка и лучшее, что возможно. Предсказуемый уровень сервиса может дать наилучший результат при использовании определенного ресурса сети, в то время как гарантированный уровень соответствует необходимому уровню услуг конкретного приложения. Провайдеры могут предоставлять один, оба или ни одного их этих двух видов услуг. |
GuaranteedService |
Провайдер, поддерживающий гарантированный уровень сервиса, использует алгоритм очередей, в котором поток изолируется от влияния других потоков, и гарантирует, на сколько возможно, пропускную способность. Если отправитель шлет данные с большей скоростью, сеть может задержать или даже ликвидировать “лишнюю” часть потока. Если поток находится в пределах допустимого, то гарантируется и задержка отклика. Этот вид сервиса предусмотрен для приложений реального времени. |
PredictiveService |
Провайдер, поддерживающий предсказуемый уровень сервиса, гарантирует пропускную способность, по крайней мере равную TokenRate, на время соединения. Если отправитель шлет данные с большей скоростью, сеть может задержать или даже ликвидировать “лишнюю” часть потока. Значение задержки не гарантируется. Этот вид сервиса предназначен для приложений, способных адаптироваться к вариациям качества услуг, например, передача видео изображения. |
ControlledLoadService |
Этот уровень сервиса предполагает, что система сетевых устройств, которыми пользуется приложение, обеспечит условия работы, близкие к тем, которые достижимы при незагруженных каналах, для используемой транспортной среды. Приложения, использующие этот уровень сервиса, могут ожидать что: 1. Большая часть передаваемых пакетов будет успешно доставлена (процент потерь определяется частотой ошибок транспортной среды). 2. Задержка доставки не будет заметно превышать минимальное время распространения сигнала в используемой транспортной среде. |
BestEffortService |
Провайдеры, поддерживающие уровень сервиса “лучшее что возможно”, рассматривают спецификацию потока, как руководство к действию. И пытаются сделать все возможное, чтобы поддержать запрашиваемый уровень сервиса (без каких-либо твердых гарантий). |
TokenRate/TokenBucketSize |
Модель “блоков символов” (Token bucket model) используется для задания верхнего предела скорости обмена. Величина value -1 в этом случае означает, что не существует никаких ограничений на скорость обмена. Значение TokenRate (частота символов) выражается в байтах в сек, а TokenBucketSize в байтах. Блок имеет определенный объем (TokenBucketSize), который заполняется с определенной скоростью (TokenRate). Если в блоке достаточно места, приложение может посылать данные, что приводит к уменьшению свободного места. Если же свободного места нет, приложение должно прервать обмен и ждать. Если приложение в течение определенного времени слало данные со скоростью меньше чем TokenRate, оно может затем на некоторое время превысить эту скорость. |
PeakBandwidth |
Значение этого поля (выражается в байтах в сек) ограничивает максимальную скорость пересылки пакетов приложением. Промежуточные системы могут использовать эту величину для оптимизации использования имеющихся ресурсов. |
Latency |
Характеризует максимально приемлемую задержку между посылкой бита отправителем и его получением адресатом (в миллисекундах). |
DelayVariation |
Значение этого поля в миллисекундах характеризует разницу между максимальной и минимальной задержкой доставки пакетов. Этот параметр используется приложением для расчета объема входного буфера. |
CostOfCall |
Зарезервировано на будущее и должно равняться нулю. |
NetworkAvailability |
Это поле, доступное провайдерам только в режиме чтения, используется для сообщения приложению о доступности транспортной среды (например, знакомая многим ситуация потери спутника антенной). |