O throughput como uma das medidas empregadas para o planejamento de capacidades de uma rede
Muitos profissionais da área possuem dificuldades em compreender corretamente o que significa “throughput“. O throughput é o termo dado à quantidade de dados transferidos em uma rede, utilizando-se como unidades básicas o bps, Kbps, Mbps e o Gbps. Há também a unidade “packets per second” ou “PPS” que determina a quantidade de pacotes que podem ser efetivamente transferidos através da rede por segundo.
Há uma relação entre a largura de banda de uma rede e a real capacidade de transferência de dados sobre esta, o que chamamos de throughput efetivo, e isto pode ser medido em bits por segundo ou, em alguns casos, em pacotes por segundo. No entanto, embora haja esta relação entre a largura de banda e o throughput, o throughput em si é diferente da largura de banda nominal. Isto é verdadeiro porque o throughput sempre se dará pela condição de menor capacidade de uma das pontas, supondo que, por exemplo, em um ponto a capacidade/largura nominal seja de 10 Gbps e na outra ponta a capacidade seja de 1 Gbps: neste caso, o throughput em bits por segundo será de 1 Gbps.
A importância de conhecermos estas unidades básicas
É importante conhecer estas unidades básicas e estas medições, pois é através destes que realizamos o planejamento e estudo de capacidades de uma rede. O desempenho de uma parte da rede, e até mesmo de toda a rede em função desta parte – como é o caso da decorrência de gargalos – está condicionado ao correto dimensionamento das capacidades a serem aplicadas sobre a infraestrutura.
Obviamente o planejamento de capacidades de uma rede inteira não se resume somente ao throughput, pois outras variáveis necessitam ser fatoradas e em todo o contexto. Por exemplo, os diversos tipos de tráfego e suas respectivas exigências ou requerimentos por latência fim a fim, jitter e perda de pacotes, além de temas relacionados à sessões concorrentes e máximas, payload típico por tipo de requisição, etc. Enfim, isto foge substancialmente do tema deste artigo em questão, e deixaremos isto de lado para uma próxima oportunidade. Voltando ao foco do artigo aqui.
Qual deverá ser o dimensionamento de capacidade de um equipamento dentro de uma determinada camada ou perímetro da rede?
Por exemplo, qual tipo de equipamento você posicionará naquela camada (Acesso, Distribuição ou Agregação, ou Core) da rede? Quais deverão ser as densidades por portas/interfaces por tipo de capacidade desejada para este equipamento? A escolha do equipamento correto em termos de desempenho e capacidades será fundamental para fazer com que as aplicações que dependam da infraestrutura se comportem corretamente e de acordo com os níveis de serviço determinados, e em função dos requerimentos de transmissão de cada tipo de aplicação.
Para exemplificar bem isto, voz (VoIP) é extremamente intolerante quanto aos índices de perda de pacotes, atrasos ou delay fim-a-fim elevados, e também na variação no atraso da rede (jitter). Por outro lado, vídeo-conferência sobre o protocolo IP requer suficiência de banda e baixo retardo, enquanto aplicações de missão crítica deverão ter garantias de suficiência de banda e algum desempenho “determinístico” na medida do possível.
Uma coisa é a taxa teórica de uma interface ou porta de um equipamento, tipo um roteador ou switch, outra coisa é o que ocorre na prática. Toda rede é composta por equipamentos, e cada equipamento introduz atrasos na rede, tais como:
Tipo de atraso presentes em uma rede
- Atraso decorrente de processamento (ex: CPU), que costuma ser variável;
- Atraso decorrente de enfileiramento (filas tais quais FIFO, CQ, PQ, WFQ, LLQ, MDRR, WRR, SRR), que pode ser variável mas também poderá ganhar um aspecto determinístico por conta de configurações de QoS;
- Atraso decorrente da “serialização” dos dados no meio de transmissão. Este atraso costuma ser fixo, determinado pelo tipo de interface;
- Atraso decorrente da propagação do bit fim-a-fim, que é fixo mas varia de meio de transmissão para meio de transmissão, e de enlace para enlace. Por exemplo, um enlace de WAN de 2 Mbps entre duas cidades – Rio de Janeiro e Niterói, por exemplo – será provavelmente razoavelmente mais rápido do que um enlace de WAN entre Rio de Janeiro e Rio Branco no Acre.
Portanto é natural que o desempenho prático de uma rede não seja necessariamente aquele esperado baseado em sua condição teórica. Há situações onde um equipamento possui interfaces com 10 Gbps de capacidade de transmissão, mas ao chegar a 1.5 Mpps (milhões de pacotes por segundo) na prática, o equipamento fica literalmente “surrado”, com quase 100% de processamento registrado na CPU, apresentando péssimo desempenho e registrando perdas de pacotes e atrasos bastante indesejáveis.
Os padrões adotados pela indústria e as diferenças do throughput entre as soluções dos fabricantes de merdado
Conforme eu havia comentado, a taxa prática de pacotes por segundo tem relação, sim, com o tipo de equipamento e suas capacidades. No entanto, a taxa teórica é definida por standard (padrão), e obrigatoriamente tem que ser idêntica em todos os fabricantes. Ou seja, a taxa teórica de uma porta FastEthernet de um switch CISCO tem que ser idêntica a taxa de uma porta FastEthernet de um switch “XLING”. Isto porque se ambos os produtos foram projetados em total conformidade com os padrões Ethernet, eles tem que ostentar as mesmas capacidades em suas portas Ethernet.
Analogia aqui: o que pesa mais, 1 Kg de chumbo ou 1 Kg de algodão? Absolutamente a mesma coisa, pois a unidade em questão é o kilograma, certo? E o mesmo tem relação uma porta Gigabit Ethernet: se é Gigabit Ethernet em fabricante “A”, também será para fabricante “B”.
Portanto, o que difere não é a porta Ethernet em si, mas como os componentes gerais do produto do fabricante interagem e participam em termos de programabilidade, processamento e transmissão. Equipamentos com melhores capacidades efetivamente poderão utilizar melhor a largura de banda proporcionada pela porta Ethernet em questão enquanto ostentando taxas de transmissão de pacotes por segundo mais elevadas e, preferencialmente, mais próximas possíveis do “teto” estabelecido pelo padrão Ethernet daquele tipo de interface (100 Mbps, 1 Gbps, 10 Gbps…).
Algumas observações sobre a ordem de processamento de pacotes e a implementação das diversas “features”
O grande diferencial entre as muitas plataformas de roteadores e switches no mercado está no que chamamos de “pipeline de processamento de pacotes“, e isto é observado tanto para os pacotes que estão sendo recebidos por uma interface (Rx) quanto para os pacotes que serão transmitidos ou saindo pela interface (Tx).
Cada tipo de equipamento realiza isto de uma forma quase que exclusiva. Por exemplo, o Policy Feature Card 3 (PFC3) do módulo Supervisor 720 de um Catalyst 6500 realiza o IFE e OFE de forma substancialmente diferenciada se comparado ao Policy Feature Card 4 (PFC4) do módulo Supervisor 2T do mesmo equipamento. Os módulos M do switch Cisco Nexus 7000 realizam isto de um jeito único se comparado aos módulos F do mesmo switch, e, em ambos os casos, há poucas semelhanças com relação a como isto é feito pelos PFC3 e 4 do Catalyst 6500.
Roteadores Cisco ASR 9000, por sua vez, realizam este processo em NPUs altamente especializadas, e com diferenças significativas entre as três gerações de NPUs desta linha de equipamentos (Trident, Typhoon, Tomahawk). O Cisco ASR 1000, por sua vez, é único no procedimento envolvendo as SIP e principalmente os módulos ESP (onde reside o Data Plane), pois a sua tecnologia de processamento de pacotes (Cisco Quantum Flow Processor, ou QFP) é considerada como uma das mais avançadas do mundo atualmente.
Roteadores Cisco CRS realizam os pipelines de entrada e saída em componentes físicos separados na mesma placa/módulo de I/O ou Line Card. O grande diferencial está na arquitetura de separação entre os planos de controle e de dados, arquitetura geral sistêmica, e tecnologias empregadas nos processadores de rede para fazer com que o processamento de pacotes seja realizado integralmente em hardware altamente especializado e com zero ou mínimo envolvimento de processos de software.
As taxas de transmissão típicas de indústria
Falando nestas taxas de transmissão com a unidade pacotes por segundo, isto é algo definido pelos padrões Ethernet. Alguns exemplos?
- Ethernet (10 Mbits/sec): 14,880 pps
- Fast Ethernet: 148,800 pps
- Gigabit Ethernet: 1.4 million PPS
Se a taxa de pacotes por segundo de uma porta FastEthernet é padrão em todos os equipamentos, ou seja, 148,800 pacotes por segundo, por que, então, um switch “X” é melhor do que o outro, “Y”? Por que um switch “X” consegue na função comutação em multicamadas uma taxa de transmissão em pacotes por segundo mais elevada do que o switch “Y”?
Isto tem a ver com diversas situações, envolvendo o processamento interno dos equipamentos, e como recursos e funcionalidades são tratadas (ex: roteamento baseado em hardware especializado (ASICs, NPUs,…), QoS, ACLs, também em hardware, etc.). Justamente o que falávamos logo acima: a diferença está em toda a inteligência e na sofisticação tecnológica empregada nos muitos componentes eletro-eletrônicos e no microcódigo que aparelha nestes componentes, assim como o software do equipamento responsável por programar o hardware para a execução destas ações, gerando a tão desejada independência entre os planos de Controle e Dados (control plane e data plane).
As diferenças de throughput entre ações de L2 e L3 em roteadores convencionais
Só para constar, histórica e tipicamente, um switch é muito mais rápido do que um router. Por que? Porque um roteador geralmente possui muito mais inspeções para realizar (cabeçalhos adicionais, etc.), sem contar que a adição de serviços de tratamento mais avançados nos pacotes (ex: ACL, QoS, NAT, PBR, etc.) acarretam em atrasos maiores decorrentes destes processamentos, o que fazem com que a taxa prática de uma porta (ex: Gigabit Ethernet) simplesmente caia.
E muito por conta, obviamente, do fato que estes processamentos adicionais, tais como a a consulta e posterior aplicação de uma regra de segurança (ACL), uma tradução de endereços (NAT), o mesmo para QoS, e situações do gênero, são realizadas por processos de software em execução na CPU do equipamento, ao invés de hardware especializado, como é o caso dos multilayer switches da atualidade.
Em um switch Ethernet “convencional”, padrão, quando um pacote é só “comutado” (sem roteamento), a taxa de transmissão poderá chegar a Mpps. Mas quando o pacote precisa ser roteado, esta taxa cai dramaticamente para milhares de pacotes por segundo (ao invés de Milhões). Em equipamentos mais modernos e sofisticados, quando se consegue rotear na mesma taxa em que se consegue comutar, ou com mínima degradação de desempenho na medida em que mais recursos para ações sobre os pacotes são aditivados, chamamos isto de “wire-speed”.
O wire-speed é essencialmente a capacidade do equipamento em transmitir tráfego layer 2 ou layer 3 na mesma taxa, com mínima ou nenhuma degradação de performance por conta desta distinção (independentemente do pacote estar sendo roteado ou comutado), em adição à ativação de recursos ou facilidades para o processamento de pacotes.
As diferenças entre Forwarding Bandwidth e Switching Bandwidth
Se um switch tipo o Catalyst 2960-24TTL possui taxa de 6,5 Mpps, isto significaria que teríamos 270.833 por cada uma das 24 portas FE? A resposta é não. O switch precisa, na capacidade total (6,5 Mpps), de uma reserva de banda para outras funções do equipamento. A taxa teórica de cada porta Fast Ethernet continuaria sendo aquela estabelecida pela norma (148,800 pps).
Já o exemplo com o switch Catalyst 6500 é interessante. O seu datasheet cita a taxa de 450 Milhões de pacotes por segundo assegurada pela Supervisor exemplificada. Obviamente isto significa que quando o equipamento estiver todo preenchido com portas em módulos de última geração (que suportam o dCEF com o hardware DFC3C acoplado em cada um de seus módulos de I/O), a capacidade consolidada de todas estas portas perfazem 450 Mpps.
Outra dúvida muito frequente nos profissionais da área é: qual a diferença entre Forwarding Bandwidth e Switching Bandwidth?
O Forwarding Bandwidth é a banda de comutação em full duplex. Simples:
- Considere um switch de 48 portas de 1 Gbps + 2 uplinks 10 Gbps + 2 portas stacking 10 Gbps = 88 Gbps (non-blocking). Esta é a sua banda de encaminhamento do switch.
- O Switching Bandwidth na verdade considera o IN e OUT do forwarding bandwidth. Portanto, 88 * 2 = 176 Gbps. Isto é o seu “backplane”.
Espero com esta publicação ter contribuído para o esclarecimento de dúvidas acerca destes conceitos.
Leonardo Furtado