Application Notes: QoS Básico Exemplo para aplicação de QoS
Application Notes: QoS Básico Exemplo para aplicação de QoS. Data 15/03/2010, Revisão 1.2 Introdução Topologia e configurações do DmSwitch Aplicação de QoS Marcação de pacotes Filtros, Meters e Counters Traffic Shaping Conclusão Introdução Este documento apresenta configurações e exemplos práticos para aplicação de QoS numa rede onde há a necessidade de priorizar diferentes tráfegos. Topologia e configurações do DmSwitch A topologia abaixo mostra uma configuração simples para entendimento do uso dos filtros, meters e modos de escalonamento dos switches. Para analisar uma situação de congestionamento de rede e testar a aplicação do QoS nos switches, será usado um link de 100 Mbps forçado entre 2 DmSwitches e também 2 interfaces 1 Gbps como acesso, ligadas a um analisador de tráfego. DATACOM 1
A configuração inicial dos equipamentos é mostrada abaixo, onde há a criação de 4 VLANs para diferentes fluxos em cada uma delas. As interfaces 1/26 de ambos switches são forçadas para 100 Mbps para forçar uma situação de congestionamento na rede entre eles, já que as interfaces de acesso são de 1 Gbps. Configuração básica do DmSwitch_1: interface vlan range 100 103 set-member tagged ethernet range 1/25 1/26 interface ethernet 1/25 description Tester_102/1_1Gbps interface ethernet 1/26 description UpLink-100Mbps no negotiation speed-duplex 100full Configuração básica do DmSwitch_2: interface vlan range 100 103 set-member tagged ethernet range 1/25 1/26 interface ethernet 1/25 description Tester_102/2_1Gbps interface ethernet 1/26 description UpLink-100Mbps no negotiation speed-duplex 100full Abaixo estão mostrados os 4 fluxos programados no analisador de tráfego usado no teste. Também é mostrada a configuração da rede esperada para cada fluxo de dados assim como a VLAN enviada e prioridade a ser marcada. Perfil Banda Mínima Banda Máxima VLAN CoS Voz SP 20 Mbps 100 5 Business 40 Mbps 100 Mbps 101 4 BE 35 Mbps 100 Mbps 102 0 Gerencia 5 Mbps 100 Mbps 103 7 As interfaces do gerador são de 1 Gbps e estão programados apenas 10% para cada fluxo, o que corresponde a 100 Mbps. O tráfego analisado neste documento é gerado na interface 102/1, ligado ao DmSwitch_1, e espera ser recebido na interface 102/2, no DmSwitch_2. Assim, o teste em questão é realizado configurando-se apenas um dos switches. DATACOM 2
Inicialmente todos os fluxos são concorrentes entre si e assim não há como garantir qual o percentual de cada fluxo passará pela rede. A figura abaixo mostra todos os fluxos concorrendo entre si. Pela figura, é possível ver que cada fluxo é de 100 Mbps e que somente parte deste tráfego chega ao seu destino. Somando-se todos os fluxos no instante da imagem, nota-se que são enviados 400 Mbps pela interface 102/1 do gerador e somente 100 Mbps chegam na interface de destino 102/2. Um detalhe é que os frames gerados são de 9.000 bytes, fazendo com que a utilização seja quase máxima devido a minização do percentual de bits gastos com cabeçalhos. Aplicação de QoS A configuração abaixo, que é realizada na interface 1/26 do DmSwitch_1, faz com que haja uma garantia de banda mínima para cada fila, usando o método de escalonamento WFQ (Weighted Fair Queuing). Assim, a fila "0" terá garantia de entrega de 35 Mbps, a fila "4" 40 Mbps e a fila "7" 5 Mbps. Já a fila "5" terá prioridade máxima, configurada com o parâmetro SP (Strict Priority), fazendo com que esta fila seja DATACOM 3
atendida sempre antes das demais. Como esta configuração pode fazer com que esta fila ocupe toda a banda da interface e não permita tráfego nas demais filas, deve-se criar uma limitação máxima para este tipo de fila, que neste caso será de 20 Mbps. As demais filas possuem uma banda máxima ilimitada até a capacidade da interface, que neste exemplo seria de 100 Mbps. Aquelas filas que não possuem tráfego previsto podem ser zeradas no quesito de banda garantida e banda máxima, para que não ocorram consumos inesperados. Um detalhe importante é que todos os parâmetros devem ser configurados em múltiplos de 64 Kpbs. Escalonamento e banda máxima em cada fila do uplink no DmSwitch_1: interface ethernet 1/26 queue sched-mode wfq min-bw 35008 0 0 0 40000 sp 0 5056 queue max-bw unlimited 0 0 0 unlimited 20032 0 unlimited Utilizando a configuração demonstrada acima, não haverá mudança alguma no perfil de tráfego já apresentado na última figura. Por default a fila "0" é utilizada para todo tráfego não marcado e, conforme configuração, não haverá limitação máxima fazendo com que todos os fluxos irão competir igualmente. Para que seja possível fazer as devidas priorizações, o tráfego deverá estar marcado na rede ou ser alterado/encaminhado no próprio switch. Para verificar a configuração realizada: Dm3000#show queue config ethernet 1/26 --------------------------------------------------------- Port Queue Mode Max-Bw Min-Bw Weight SP-Queue --------------------------------------------------------- 1/26 0 WFQ unlimit 35008 -- NO 1/26 1 WFQ 0 0 -- NO 1/26 2 WFQ 0 0 -- NO 1/26 3 WFQ 0 0 -- NO 1/26 4 WFQ unlimit 40000 -- NO 1/26 5 WFQ 20032 ------- -- YES 1/26 6 WFQ 0 0 -- NO 1/26 7 WFQ unlimit 5056 -- NO Marcação de pacotes Para encaminhar cada fluxo de dados em alguma fila específica, deve-se criar um filtro selecionando cada fluxo e fazendo a alteração do campo 802.1P dos pacotes. Há a opção de não alterar o pacote com a opção de encaminhamento interno, mas que funcionará da mesma forma. Filtros para marcação de tráfego no DmSwitch_1: DATACOM 4
DmSwitch_1#configure DmSwitch_1(config)#filter new action 802.1p 5 match vlan 100 ingress ethernet 1/25 remark VOZ Filter 1 created. DmSwitch_1(config)#filter new action 802.1p 4 match vlan 101 ingress ethernet 1/25 remark BUSINESS Filter 2 created. DmSwitch_1(config)#filter new action 802.1p 7 match vlan 103 ingress ethernet 1/25 remark GERENCIA Filter 3 created. DmSwitch_1(config)#filter new action 802.1p 0 match vlan 102 ingress ethernet 1/25 remark BE Filter 4 created. Ao criar estas regras o resultado é imediato no analisador de tráfego. Pode-se ver que o tráfego se enquadra exatamente naquilo que foi programado, com 20 Mbps para Voz, 40 Mbps para Business, 5 Mbps para gerência e 35 Mbps para tráfego Best-Effort. Neste caso o resultado é exatamente como esperado, pois todos os fluxos são gerados acima do que é disponibilizado para cada, o que demonstra a pior situação possível. Se apenas 1 fluxo estiver ativo, este poderá consumir todos os 100 Mbps do uplink, exceto para o caso do tráfego de Voz que está limitado a 20 Mbps. Desta forma, se o tráfego BE, que tinha 35 Mbps garantidos, for desligado o tráfego de Gerência que possui garantia de 5 Mbps poderá ocupar mais banda no link, assim como ocorre com o Business. Como há uma garantia máxima limitada a 20 Mbps para o tráfego de VOZ, estes permanecerão em uso por este fluxo. Os demais 80 Mbps podem ser concorridos igualmente entre Business e Gerência, apenas observando que o tráfego de Business possui garantia mínima de 40 Mbps, fazendo com que os demais pacotes disputem pela banda livre. DATACOM 5
Enviando apenas 10 Mbps no fluxo de Voz, é possível notar que todo tráfego enviado é recebido na outra interface, por possuir a garantia de 20 Mbps e assim nenhum frame é perdido. Desta forma, sobram 90Mb para os demais fluxos e este será divido entre Business e Gerência, possibilitando 45 Mbps para cada um. Filtros, Meters e Counters Os filtros são usados para selecionar tráfegos desejados e tomar alguma ação sobre eles. Estas ações podem ser de bloqueio, permissão, alteração, etc. Além disto, há a possibilidade de usar um contador de tráfego instantâneo, que pode ser usado para fazer uma limitação para certo tipo de tráfego (Traffic Shaping). Além disto, também há contadores incrementais que podem ser usados para contabilizar frames de diversos perfis da rede. Abaixo são mostradas as opções possíveis na linha Dm3000 para selecionar o tráfego desejado. Dm3000(config)#filter new match <?> 802.1p Specify 802.1p priority (outer/single tag) 802.1p-inner Specify 802.1p priority (inner tag) all Match all packets destination-ip Specify destination IP address destination-mac Specify destination MAC address destination-port Specify destination L4 port dscp Specify IP DSCP field ethertype Specify EtherType field generic Specify a generic match protocol Specify L4 protocol source-ip Specify source IP address source-mac Specify source MAC address source-port Specify source L4 port tos-bits Specify IP ToS lower bits tos-precedence Specify IP ToS Precedence vlan Specify VLAN ID (outer/single tag) vlan-inner Specify VLAN ID (inner tag) Para a linha Dm4000 há as opções abaixo. Dm4000(config)#filter new match <?> 802.1p Specify 802.1p priority (outer/single tag) all Match all packets destination-ip Specify destination IP address destination-mac Specify destination MAC address DATACOM 6
destination-port Specify destination L4 port dscp Specify IP DSCP field ethertype Specify EtherType field protocol Specify L4 protocol source-ip Specify source IP address source-mac Specify source MAC address source-port Specify source L4 port tos-bits Specify IP ToS lower bits tos-precedence Specify IP ToS Precedence vlan Specify VLAN ID (outer/single tag) As ações possíveis para a linha Dm3000 estão demonstradas abaixo. Dm3000(config)#filter new action <?> permit Cause the packet to be switched deny Discard the packet 802.1p Insert 802.1p priority value 802.1p-from-tos Insert 802.1p priority from IP ToS Precedence counter Counts packets of a flow drop-precedence Internally set packet to drop-precedence dscp Insert Differentiated Services Code Point egress-block Set Ethernet port(s) to block monitor Copy the packet to monitor interface tos Insert IP ToS Precedence value tos-from-802.1p Insert IP ToS Precedence from 802.1p priority vlan Insert VLAN ID Para a linha Dm4000 há as ações abaixo. Dm4000(config)#filter new action <?> permit Cause the packet to be switched deny Discard the packet 802.1p-from-inner-vlan Change packet and internal 802.1p priority from inner VLAN tag 802.1p Change packet and internal 802.1p priority value 802.1p-from-tos Change packet and internal 802.1p priority from IP ToS Precedence counter Associate a counter drop-precedence Internally set the drop-precedence of the packet dscp Change Differentiated Services Code Point egress-block Set Ethernet port(s) to block int-802.1p Change internal 802.1p priority value int-802.1p-from-inner-vlan Change internal 802.1p priority from inner VLAN tag int-802.1p-from-tos Change internal 802.1p priority from IP ToS Precedence pkt-802.1p Change packet 802.1p priority value pkt-802.1p-from-inner-vlan Change packet 802.1p priority from inner VLAN tag pkt-802.1p-from-tos Change packet 802.1p priority from IP ToS Precedence red-deny Discard red packet red-drop-precedence Internally change the drop precedence of red packet red-dscp Change Differentiated Services Code Point of red packet tos Change IP ToS Precedence value tos-from-802.1p Change IP ToS Precedence from 802.1p priority yellow-deny Discard yellow packet yellow-drop-precedence Internally change the drop precedence of yellow packet yellow-dscp Change Differentiated Services Code Point of yellow packet A seguir está demonstrado um exemplo de meter na linha Dm3000. DATACOM 7
meter new rate-limit 10048 burst 4096 remark EXEMPLO Para a linha Dm4000 uma configuração igual é mostrada abaixo. meter new mode flow rate-limit 10048 burst 4096 remark EXEMPLO Um contador pode ser criado da mesma forma na linha Dm3000 e Dm4000. counter new remark EXEMPLO Algumas opções diferem da linha Dm3000 para a linha Dm4000, devido a algumas diferenças de hardware e propósito ou mesmo posicionamento de cada equipamento numa rede Metro Ethernet. Traffic Shaping Aplicando-se um exemplo para uso de filtros, meters e counters, pode-se fazer uma limitação no tráfego de Gerência que estava consumindo 40 Mbps. Desta forma, o filtro da gerência pode ser editado para que permita a passagem de apenas 10 Mbps de dados, possibilitando assim que o tráfego Business possa ocupar 80 Mbps. Traffic Shaping no DmSwitch_1: DmSwitch(config)#meter new rate-limit 10048 burst 4096 remark Limitacao_Gerencia Meter 1 created. DmSwitch(config)#counter new remark Contabilizacao_Gerencia Counter 1 created. DmSwitch(config)#filter 3 remark GERENCIA action 802.1p 7 action counter 1 meter 1 match vlan 103 ingress ethernet 1/25 out-action deny Pode-se verificar o valor do contador incremental de dados que estão in-profile referente ao filtro criado: DmSwitch#show counter id 1 ID Remark Filter Counter Value ---- ---------------------------------- ------ -------------------------- 1 (Gerencia) 3 382744 DATACOM 8
Conclusão As configurações da linha DmSwitch são bastante flexíveis, podendo-se diferenciar o tratamento de cada fila, respeitando-se a granularidade de 64 Kbit/s, além de escolher o WFQ, RR, WRR e SP como métodos de escalonamento. Há configurações mais avançadas que podem ser usadas, mas que são tratadas em outra documentação, como WRED, demais métodos de escalonamento não apresentados, mapeamento interno de CoS, entre outros recursos. DATACOM 9