Na Internet podemos encontrar diversos textos explicando o que é CoS (Class of Service) e ToS (Type of Service), porém poucos explicam de maneira prática a diferença entre eles.
Para piorar, existe pequenas diferenças entre esses dois mecanismos de priorização. No entanto, essas diferenças pequenas na prática se tornam muito importantes e é exatamente isso que pretendo apresentar neste texto.
O esforço de priorização
Um switch, roteador ou qualquer equipamento de rede trabalha da mesma maneira: recebe um pacote de dados por suas portas, identifica para onde esse pacote deve ser direcionado e manda esse pacote para a porta de saída mais apropriada. As vezes, no entanto, essa porta de saída está ocupada, assim o equipamento deve colocar esse pacote em uma fila (como uma fila de banco) até chegar sua vez de ser transmitido. Tudo muito simples.
O problema é que hoje em dia uma rede (seja uma rede local ou WAN) precisa transportar diversos tipos de tráfegos que precisam de tratamento diferente: um tráfego de telefonia IP precisa ter prioridade, um tráfego de arquivos pode demorar alguns milissegundos. Assim o switch ou roteador precisa ser capaz de priorizar os pacotes mais importantes, passando na frente dos demais.
Como esse switch ou roteador faria para decidir quais pacotes são mais importantes que os outros? Uma maneira seria que cada switch ou roteador analisasse cada pacote, de acordo com as instruções passadas pelo administrador e tomasse a decisão apropriada. Essa ideia é muito boa, porém tem alguns problemas:
Para piorar, existe pequenas diferenças entre esses dois mecanismos de priorização. No entanto, essas diferenças pequenas na prática se tornam muito importantes e é exatamente isso que pretendo apresentar neste texto.
O esforço de priorização
Um switch, roteador ou qualquer equipamento de rede trabalha da mesma maneira: recebe um pacote de dados por suas portas, identifica para onde esse pacote deve ser direcionado e manda esse pacote para a porta de saída mais apropriada. As vezes, no entanto, essa porta de saída está ocupada, assim o equipamento deve colocar esse pacote em uma fila (como uma fila de banco) até chegar sua vez de ser transmitido. Tudo muito simples.
O problema é que hoje em dia uma rede (seja uma rede local ou WAN) precisa transportar diversos tipos de tráfegos que precisam de tratamento diferente: um tráfego de telefonia IP precisa ter prioridade, um tráfego de arquivos pode demorar alguns milissegundos. Assim o switch ou roteador precisa ser capaz de priorizar os pacotes mais importantes, passando na frente dos demais.
Como esse switch ou roteador faria para decidir quais pacotes são mais importantes que os outros? Uma maneira seria que cada switch ou roteador analisasse cada pacote, de acordo com as instruções passadas pelo administrador e tomasse a decisão apropriada. Essa ideia é muito boa, porém tem alguns problemas:
- dá muito trabalho ao administrador, que precisaria entrar em cada switch e roteador e fazer as configurações de todas as regras.
- consome muito processamento dos switches e roteadores, pois cada equipamento precisaria "pensar" no que fazer em cada pacote. Isso significa que os switches e roteadores precisariam de processadores de maior performance e assim seriam mais caros
- é difícil de manter, pois para cada novo protocolo ou aplicação o administrador precisaria reconfigurar todos os equipamentos da rede.
O ideal seria que um equipamento da rede (quer seja um switch ou roteador) fizesse essa análise e passasse o pacote para frente com uma marcação, indicando aos demais equipamentos qual a prioridade do pacote. Assim os demais equipamentos da rede apenas obedeceriam essa marcação.
Marcação de pacotes
Surge assim o conceito de marcação de pacotes. Explicando de maneira didática, marcação de pacotes quer dizer que se adiciona um byte especial ao pacote e essa número indica qual a prioridade desse pacote. Assim os demais switches e roteadores leem esse byte e já sabem se qual a prioridade, por exemplo, 7 para pacotes de altíssima prioridade, 6 para pacotes de alta prioridade, 5 para pacotes de média prioridade e assim por diante até 0 para pacotes de menor prioridades (esses últimos tem sorte se forem transmitidos e só trafegam quando a rede não está congestionada).
Para isso funcionar precisamos apenas criar uma maneira padronizada de marcar os pacotes, ai entram os padrões IEEE802.1p e DiffServ.
Ethernet e IP
Dentro de uma rede local, os pacotes trafegam via Ethernet e IP ao mesmo tempo. Isso confunde muitas pessoas, que acabam não diferenciando uma coisa da outra. Antigamente haviam outros protocolos concorrentes do Ethernet (como Token Ring ou FDDI) e outros protocolos de rede (como IPX, SNA, etc).
Assim era possível termos IP sobre Token Ring ou IPX trafegando em rede Ethernet (na verdade ainda hoje existem variações em uso, porém quero manter este texto simples então não vou entrar aqui em detalhes). Hoje a maioria das pessoas está tão acostumada a apenas ver tráfego IP em rede Ethernet que acaba confundindo e misturando ambas coisas. No entanto são protocolos com funções diferentes (novamente, não vou entrar em detalhes aqui sobre essas diferenças para não complicar este texto).
CoS em Ethernet (IEEE802.1p)
Assim, dentro do Ethernet se criou uma marcação (de 0 a 7) onde um switch informa a outro qual a prioridade do pacote. Um switch marca, os demais obedecem.
ToS em IP (DiffServ)
Já no padrão IP foi criado também espaço para um byte de marcação, porém esse mesmo byte tem aplicações diferentes de acordo com a RFC que se queria observar. No entanto, de maneira geral, funciona da mesma maneira que o CoS, apenas para roteadores.
Assim, o IEEE802.1p é um protocolo entre switches, já o DiffServ é um protocolo entre roteadores. Essa é assim a principal diferença prática entre os dois.
Agora você pode se perguntar: porque um se chama CoS e o outro ToS? A reposta é simples: porque alguém resolveu chamar o IEEE802.1p de CoS e assim ficaria muito confuso chamar o DiffServ de CoS também, então criaram o ToS. Simples assim.
Mapeando de um para outro
Uma coisa muito comum é um pacote de dados iniciar sua vida em uma rede local, sair para a Internet e cair em uma outra rede local para chegar ao seu destino. Neste caso o switch inicial marca o pacote, esse pacote chega a um roteador e esse roteador precisa fazer a conversão de um protocolo em outro.
Assim o administrador da rede configura o roteador, indicando como será feito a conversão de uma marcação para outra e vice-versa. Algo simples, porém que deve ser feito pelo administrador da rede para que a priorização funcione corretamente tanto na rede local como na rede WAN.
ToS e a Internet
Uma pergunta muito comum é esta: já que o ToS trabalha sobre IP e a Internet é IP, então quer dizer que se eu marcar meus pacotes apropriadamente vou conseguir que a Internet priorize meu tráfego? A resposta é não, porque os provedores de Internet configuram seus roteadores para não perder tempo lendo esse byte.
Dessa forma, se os provedores de Internet quisessem poderiam priorizar os tráfegos de voz e vídeo para garantir melhor qualidade, porém não fazem, primeiro porque querem economizar no custo dos roteadores, segundo porque normalmente esses mesmos provedores vendem serviços (mais caros) de VPN, MPLS, etc. Assim porque eles dariam de graça algo que podem cobrar a mais?
Por último, se você achou útil este artigo não esqueça de compartilhar usando os botões de Twitter, Facebook ou Google+ abaixo, porque outros podem também se interessar por este artigo.
Comentários