A maioria das ações para implantar QoS são implementadas no nível físico das redes (melhorar a estrutura de transmissão), na disponibilidade do hardware (sistemas totalmente redundantes) ou na programação dos protocolos (melhores algoritmos de controle de tráfego).
O controle de congestionamentos, o superdimensionamento dos recursos de hardware, as técnicas de armazenamento temporário (buffers) e a criação de canais de comunicação virtuais e privados denominados VPN - Virtual Private Network - são soluções gerenciáveis e disponíveis, porém, envolvem altos custos e demandam especializações.
O protocolo Internet, por si só, contribui muito pouco para a introdução da QoS em uma rede. Basicamente, é possível fazer a modelagem dos dados e a reserva de recursos de largura de banda através da diferenciação dos serviços usando propriedades do TCP/IP.
A diferenciação de serviços leva em conta as necessidades de transmissão de pacotes baseado no tipo de aplicação. É evidente que uma transmissão de áudio e vídeo, em tempo real, precisa de mais vazão, de menor retardo e de mais confiabilidade do que o envio de uma mensagem de texto simples de um correio eletrônico.
As tecnologias de redes estão cada vez mais convergentes. Aplicações como telefonia sobre IP (VoIP), vídeo conferência e multimídia (música e vídeo) utilizam grande parte da largura de banda atual.
Certamente o protocolo IP, em sua versão IPv4, não está preparado para lidar com essa convergência e ainda oferecer serviços de qualidade.
Ações de QoS nos níveis físico e de hardware da rede são e serão sempre muito importantes. Quando a "estrada" fica congestionada o caminho mais fácil ainda é aumentar a largura da via. Essa é uma abordagem do tipo "quanto mais melhor". Mas, os custos financeiros dessa abordagem normalmente são impeditivos e geram limitações.
Além disso, soluções isoladas como essa, tendem somente adiar o problema para mais tarde. Gerenciar a qualidade dos serviços é um conjunto de ações e medidas de amplo espectro, visam atingir o problema por vários ângulos e abordagens. Uma única abordagem nunca soluciona a questão, pois é preciso uma política de tráfego para a rede.
A proposta de QoS, disponível no protocolo IP, é feita através da diferenciação de serviços - ToS - Type of Service. O princípio básico do ToS sempre esteve presente no protocolo IP, entretanto, no passado seu uso era insignificante. A maioria dos roteadores ignoravam os campos do cabeçalho usados para configurar ToS. Na RFC 791 o campo ToS era definido do seguinte modo:
3 bits para indicar precedência
3 sinalizadores binários para indicar retardo, vazão e confiabilidade
2 bits reservados para uso futuro - configurados como zero.
A RFC 1349 redefine as funções dos campos do protocolo IP envolvidos com ToS, bem como uma nova abordagem de seu uso, definindo do seguinte modo:
3 bits para indicar precedência (inalterados)
4 bits para indicar ações de ToS
1 bit reservado chamado de MBZ - Must be Zero - Deve ser Zero.
As indicações de precedência (3 bits) permitem indicar até oito situações possíveis que podem ser configuradas em uma rede. A responsabilidade da decisão baseada na leitura deste campo é exclusiva da própria rede, ou seja, configurar valores de precedência para pacotes que saem da própria rede é perda de tempo. Os valores de precedência indicados na RFC 791 são:
Originalmente, os campos sinalizadores binários (D, T e R) eram usados para indicar uma combinação de retardo, vazão e confiabilidade. Na maioria das situações, essas indicações eram feitas aos pares ou até mesmo configurando três sinalizadores ao mesmo tempo. Normalmente, um pacote que precisa de baixo retardo irá precisar de alta vazão e confiabilidade. Quando inativos (valor zero) estes sinalizadores indicam um valor normal do serviço e não especificam qualquer tratamento diferenciado ao pacote. Quando ativos (valor um) o sinalizador indica que o pacote deve procurar a saída que atenda ao sinalizador ativado.
Por exemplo, caso o sinalizador de retardo esteja ativo o pacote deverá ser encaminhado pela saída de menor retardo. No caso em que os sinalizadores de vazão e confiabilidade estão ativos o pacote deverá sair pela linha que oferece melhor essa combinação de serviços.
Atualmente os sinalizadores (D, T e R) foram levemente modificados e substituídos pela indicação de ToS que ocupa quatro bits. Os três primeiros bits continuam basicamente com o mesmo significado indicando retardo, vazão e confiabilidade. Entretanto, o quarto bit indica o custo monetário do canal. O preço de usar ou não um determinado canal de saída pode ser decisivo. Configurando todos os campos como zeros indica que o pacote irá utilizar a saída considerada normal. Quando todos os sinalizadores são configurados como zero o campo é chamado de ToS padrão (Default ToS).
As decisões de roteamento são agora tomadas após uma análise lógica deste campo como um todo. O fato do sinalizador de retardo estar ativo não define a saída com menor retardo como a melhor escolha. Antes é preciso avaliar também a combinação dos demais bits.
Deste modo, um pacote não será descartado por ter este sinalizador ativo e o roteador acreditar que o retardo em questão é alto. As decisões são tomadas em função de minimizar ou maximizar uma característica em função de uma possível linha de saída em relação a outra linha existe, e não como uma decisão arbitrária imposta pelo emissor do pacote.
Nos sistemas
GNU/Linux a implementação de QoS usando ToS é perfeitamente possível através do filtro de pacotes Iptables. Permitindo ao administrador ter maior controle sobre seu tráfego de saída. Todavia, essa solução não substitui as demais medidas na busca da qualidade do serviço como um todo.