Estrutura FLOWSPEC (qos.h)

A estrutura FLOWSPEC fornece parâmetros de qualidade de serviço para o RSVP SP. Isso permite que aplicativos com reconhecimento de QOS invoquem, modifiquem ou removam configurações de QOS para um determinado fluxo. Alguns membros de FLOWSPEC podem ser definidos como valores padrão. Confira Comentários para obter mais informações.

Sintaxe

typedef struct _flowspec {
  ULONG       TokenRate;
  ULONG       TokenBucketSize;
  ULONG       PeakBandwidth;
  ULONG       Latency;
  ULONG       DelayVariation;
  SERVICETYPE ServiceType;
  ULONG       MaxSduSize;
  ULONG       MinimumPolicedSize;
} FLOWSPEC, *PFLOWSPEC, *LPFLOWSPEC;

Membros

TokenRate

Especifica a taxa permitida na qual os dados podem ser transmitidos ao longo da vida útil do fluxo. O membro TokenRate é semelhante a outros modelos de bucket de token vistos em tecnologias WAN como a Retransmissão de Quadros, em que o token é análogo a um crédito. Se esses tokens não forem usados imediatamente, eles se acumularão para permitir a transmissão de dados até um determinado limite periódico (PeakBandwidth, no caso da qualidade de serviço do Windows 2000). No entanto, o acúmulo de créditos é limitado a um valor especificado (TokenBucketSize). Limitar o total de créditos (tokens) evita situações em que, por exemplo, fluxos inativos por algum tempo inundam a largura de banda disponível com sua grande quantidade de tokens acumulados. Como os fluxos podem acumular créditos de transmissão ao longo do tempo (em seu valor TokenRate ) apenas até o máximo de seu TokenBucketSize e porque eles são limitados em transmissões de intermitência para seu PeakBandwidth, o controle de tráfego e a integridade do recurso do dispositivo de rede são mantidos. O controle de tráfego é mantido porque os fluxos não podem enviar muitos dados de uma só vez, e a integridade do recurso do dispositivo de rede é mantida porque esses dispositivos são poupados de intermitências de tráfego altas.

Com esse modelo, os aplicativos só podem transmitir dados quando há créditos suficientes disponíveis. Se créditos suficientes não estiverem disponíveis, o aplicativo deverá aguardar ou descartar o tráfego (com base no valor de QOS_SD_MODE). Portanto, é importante que os aplicativos baseiem suas solicitações TokenRate em expectativas razoáveis para requisitos de transmissão. Por exemplo, em aplicativos de vídeo, TokenRate normalmente é definido como a taxa média de bits de pico a pico.

Se TokenRate for definido como QOS_NOT_SPECIFIED somente no receptor, a MTU (unidade de transmissão máxima) será usada para TokenRate e os limites da taxa de transmissão (o modelo de bucket de token) não serão colocados em vigor. Portanto, TokenRate é expresso em bytes por segundo.

O membro TokenRate não pode ser definido como zero. Também não pode ser definido como um padrão (ou seja, definido como QOS_NOT_SPECIFIED) em um FLOWSPEC de envio.

TokenBucketSize

A quantidade máxima de créditos que uma determinada direção de um fluxo pode acumular, independentemente do tempo, em bytes. Em aplicativos de vídeo, TokenBucketSize provavelmente será o maior tamanho médio de quadro. Em aplicativos de taxa constante, TokenBucketSize deve ser definido para permitir pequenas variações.

PeakBandwidth

O limite superior da permissão de transmissão baseada em tempo para um determinado fluxo, em bytes por segundo. O membro PeakBandwidth restringe fluxos que podem ter acumulado uma quantidade significativa de créditos de transmissão ou tokens de recursos de rede sobrecarregados com intermitências de dados únicos ou cíclicas, impondo um teto de transmissão de dados por segundo. Alguns sistemas intermediários podem aproveitar essas informações, resultando em uma alocação de recursos mais eficiente.

Latency

Atraso máximo aceitável entre a transmissão de um bit pelo remetente e seu recebimento por um ou mais receptores pretendidos, em microssegundos. A interpretação precisa desse número depende do nível de garantia especificado na solicitação QOS.

DelayVariation

A diferença entre o atraso máximo e o mínimo possível de um pacote ocorrerá, em microssegundos. Os aplicativos usam DelayVariation para determinar a quantidade de espaço em buffer necessária no final do recebimento do fluxo. Essas informações de espaço em buffer podem ser usadas para restaurar o padrão de transmissão de dados original.

ServiceType

Especifica o nível de serviço a ser negociado para o fluxo. O membro ServiceType pode ser um dos seguintes tipos de serviço definidos.

Valor Significado
SERVICETYPE_NOTRAFFIC
Indica que nenhum tráfego será transmitido na direção especificada. Em mídia compatível com duplex, esse valor sinaliza o software subjacente para configurar apenas conexões unidirecionais. Esse tipo de serviço não é válido para a API TC.
SERVICETYPE_BESTEFFORT
Resulta em nenhuma ação executada pelo RSVP SP. No entanto, o controle de tráfego cria um fluxo BESTEFFORT e o tráfego no fluxo será tratado pelo controle de tráfego da mesma forma que outro tráfego BESTEFFORT.
SERVICETYPE_CONTROLLEDLOAD
Fornece um QOS de ponta a ponta que se aproxima da qualidade de transmissão fornecida pelo serviço de melhor esforço, conforme esperado em condições descarregadas dos componentes de rede associados ao longo do caminho de dados.

Os aplicativos que usam SERVICETYPE_CONTROLLEDLOAD podem, portanto, assumir o seguinte:

  • A rede fornecerá uma porcentagem muito alta de pacotes transmitidos aos receptores pretendidos. Em outras palavras, a perda de pacotes aproximará de perto a taxa básica de erros de pacote do meio de transmissão.
  • O atraso de transmissão para uma porcentagem muito alta dos pacotes entregues não excederá muito o atraso mínimo de trânsito experimentado por qualquer pacote entregue com êxito.
SERVICETYPE_GUARANTEED
Garante que os datagramas chegarão dentro do tempo de entrega garantido e não serão descartados devido a estouros de fila, desde que o tráfego do fluxo permaneça dentro de seus parâmetros de tráfego especificados. Esse serviço destina-se a aplicativos que precisam de uma garantia firme de que um datagrama chegará até um determinado momento depois de ter sido transmitido por sua origem.
SERVICETYPE_QUALITATIVE
Indica que o aplicativo requer melhor que a transmissão BESTEFFORT, mas não pode quantificar seus requisitos de transmissão. Aplicativos que usam SERVICETYPE_QUALITATIVE podem fornecer um objeto de política de identificador de aplicativo. O objeto de política de identificação de aplicativo permite que os servidores de política na rede identifiquem o aplicativo e, portanto, atribuam uma qualidade de serviço apropriada à solicitação. Para obter mais informações sobre a identificação do aplicativo, consulte o draft-ietf-rap-rsvp-appid-00.txt de Rascunho da Internet do IETF ou o white paper da Microsoft sobre Identificação de Aplicativo. O controle de tráfego trata fluxos desse tipo com a mesma prioridade que o tráfego BESTEFFORT no computador local. No entanto, os programadores de aplicativos podem obter prioridade aumentada para esses fluxos modificando as configurações de Camada 2 no fluxo associado usando o QOS_TRAFFIC_CLASS objeto QOS.
SERVICETYPE_NETWORK_UNAVAILBLE
Usado para notificar as alterações de rede.
SERVICETYPE_NETWORK_CONTROL
Usado somente para transmissão de pacotes de controle (como mensagens de sinalização RSVP). Esse ServiceType tem a prioridade mais alta.
SERVICETYPE_GENERAL_INFORMATION
Especifica que todos os tipos de serviço têm suporte para um fluxo. Pode ser usado somente no lado do remetente.
SERVICETYPE_NOCHANGE
Indica que a qualidade do serviço na transmissão usando esse valor ServiceType não é alterada. SERVICETYPE_NOCHANGE pode ser usado ao solicitar uma alteração na qualidade do serviço apenas para uma direção ou ao solicitar uma alteração somente dentro dos parâmetros ProviderSpecific de uma especificação QOS e não no SendingFlowspec ou ReceivingFlowspec.
SERVICETYPE_NONCONFORMING
Usado para indicar o tráfego não em conformidade.
SERVICE_NO_TRAFFIC_CONTROL
Indica que o controle de tráfego não deve ser invocado na direção especificada.
SERVICE_NO_QOS_SIGNALING
Suprime a sinalização RSVP na direção especificada.
 

A lista a seguir identifica a prioridade relativa das configurações de ServiceType :

SERVICETYPE_NETWORK_CONTROL

SERVICETYPE_GUARANTEED

SERVICETYPE_CONTROLLED_LOAD

SERVICETYPE_BESTEFFORT

SERVICETYPE_QUALITATIVE

Tráfego não compatível

Para um exemplo simples, se um determinado dispositivo de rede fosse limitado a recursos e tivesse que escolher entre transmitir um pacote de uma das configurações de ServiceType acima, ele primeiro enviaria um pacote de SERVICETYPE_NETWORKCONTROL e, se não houvesse pacotes desse ServiceType que exijam transmissão, ele enviaria um pacote de SERVICETYPE_GUARANTEED ServiceType e assim por diante.

MaxSduSize

Especifica o tamanho máximo do pacote permitido ou usado no fluxo de tráfego, em bytes.

MinimumPolicedSize

Especifica o tamanho mínimo do pacote para o qual a qualidade de serviço solicitada será fornecida, em bytes. Pacotes menores que esse tamanho são tratados pelo controle de tráfego como MinimumPolicedSize. Ao usar a estrutura FLOWSPEC em associação com RSVP, o valor de MinimumPolicedSize não pode ser zero; no entanto, se você estiver usando a estrutura FLOWSPEC especificamente com a API TC, poderá definir MinimumPolicedSize como zero.

Comentários

Muitos membros da estrutura FLOWSPEC podem ser definidos como valores padrão definindo o membro como QOS_NOT_SPECIFIED. Observe que os membros que podem ser definidos como valores padrão diferem dependendo se o FLOWSPEC é um FLOWSPEC de recebimento ou um FLOWSPEC de envio.

Há algumas considerações que você deve ter em mente ao usar FLOWSPEC com o controle de tráfego:

  • TokenRate pode ser QOS_NOT_SPECIFIED para SERVICETYPE_NETWORKCONTROL, SERVICETYPE_QUALITATIVE e SERVICETYPE_BESTEFFORT. TokenRate deve ser válido para todos os outros valores ServiceType .
  • Se PeakBandwidth for especificado, ele deverá ser maior ou igual a TokenRate.
Muitas configurações podem ser padronizadas em um FLOWSPEC de recebimento, exceto ServiceType, com as seguintes considerações:
  • Para um receptor do Serviço de Carga Controlado, os valores padrão são derivados do TSPEC do remetente.
  • Para um receptor de Serviço Garantido, ServiceType e TokenRate devem ser especificados.
A lista a seguir especifica os valores que são aplicados quando um FLOWSPEC de recebimento define os valores correspondentes como padrão:

Quando o valor do ServiceType é definido como SERVICETYPE_GUARANTEED, o seguinte também se aplica:

  • O valor RATE em RSPEC é definido como o valor de TokenRate.
  • O valor DELAYSLACKTERM em RSPEC é definido como DelayVariation, que é definido como zero se DelayVariation for definido como QOS_NOT_SPECIFIED.
  • Para receptores que solicitam SERVICETYPE_GUARANTEED, o TokenRate de recebimento deve ser especificado. Isso contrasta com um receptor SERVICETYPE_CONTROLLEDLOAD, para o qual TokenRate pode ser definido como QOS_NOT_SPECIFIED.
Em um FLOWSPEC de envio, tudo pode ser padronizado, exceto ServiceType e TokenRate. A lista a seguir especifica os valores que são aplicados quando um FLOWSPEC de envio define os valores correspondentes como padrão:

Controle de tráfego: Os ServiceTypes a seguir são inválidos ao trabalhar especificamente com o Controle de Tráfego. Se você não tiver certeza se está trabalhando diretamente com o Controle de Tráfego (e, portanto, precisa se preocupar se os seguintes ServiceTypesão aplicáveis em sua situação), você provavelmente não está:

SERVICE_NO_TRAFFIC_CONTROL
SERVICE_NO_QOS_SIGNALING
SERVICETYPE_GENERAL_INFORMATION
SERVICETYPE_NETWORK_UNAVAILABLE
SERVICETYPE_NOCHANGE
SERVICETYPE_NOTRAFFIC

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Cabeçalho qos.h

Confira também

QOS