Melhorando a Performance de Transferência de Arquivos e Comunicação entre Nós de um Cluster: Jumbo Frame.

Como sabemos o tamanho dos arquivos transmitidos em rede está cada vez maior, por isso otimizando a transferência de grandes quantidades de dados é importante, então vamos lá por default o limite de 1500 bytes para o conteúdo dos frames foi criado originalmente como parte das especificações do padrão, a idéia inicial era que frames muito grandes agravariam o problema das colisões, bom hoje em dia mudou muita coisa, evoluiu as tecnologias e o cabeamento, a velocidade das redes aumentou de 10 para 100, 1000 e para 10000 megabits e com a utilização de switches as colisões de pacotes deixaram de ser um problema. Bom para utiliza-lo, segue alguns cuidados:

– Apenas placas e switches Gigabit Ethernet suportam o uso de jumbo frames, de forma que eles são utilizáveis apenas em redes baseadas em equipamentos recentes.
– Nem todas as placas e switches oferecem suporte ao recurso, de forma que é necessário cuidado na hora da compra. Equipamentos que não suportam jumbo frames fazem com que os frames precisem ser retransmitidos ou fragmentados para atender ao limite de 1500 bytes. Com isso, forçar o uso de jumbo frames em uma rede mista acaba reduzindo o desempenho da rede em vez de aumentar.
– Como não existe um padrão oficial, problemas de compatibilidade entre produtos de diferentes fabricantes são comuns.
– O uso dos jumbo frames só oferece ganhos práticos durante as transferências de grandes arquivos.

Agora a pergunta qual MTU utilizar?
Por exemplo, se a placa de rede do Linux suportar MTU de 9000 bytes, o switch suportar 12000 bytes e o SAN suportar 10000 bytes, o MTU utilizado deve ser 9000 bytes.

Ambientes com Oracle RAC o ganho de performance é muito grande, por isso é interessante implementar pois o padrão dos bloco Oracle é de 8k ou 8192 bytes, se por default ficar com 1500 bytes é necessário muitos frames enviados e recebidos pelo servidores para transmitir 1 bloco, por isso que é interessante implementar no Oracle RAC porém em single instance não tem o porque de se implementar já que apenas resultados são enviados para a aplicação.

Se você tiver dúvida sobre qual MTU está sendo utilizado no tráfego entre seu Linux e uma máquina de destino, utilize o comando:
tracepath IP_DESTINO
Exemplo de saida do comando:
[root@srv ~]# tracepath 192.168.233.152
1: srv (192.168.233.152) 0.099ms pmtu 16436
1: srv (192.168.233.152) 0.025ms reached
1: srv (192.168.233.152) 0.016ms reached
Resume: pmtu 16436 hops 1 back 64

Verificando MTU atualmente configurado nas interfaces do servidor:

[root@srv ~]# ifconfig
eth1 Link encap:Ethernet HWaddr 00:0C:29:1A:8F:D5
inet addr:192.168.233.151 Bcast:192.168.233.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe1a:8fd5/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3269 errors:0 dropped:0 overruns:0 frame:0
TX packets:3435 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:682315 (666.3 KiB) TX bytes:2120752 (2.0 MiB)

eth2 Link encap:Ethernet HWaddr 00:0C:29:1A:8F:DF
inet addr:192.168.233.152 Bcast:192.168.233.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe1a:8fdf/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:297 errors:0 dropped:0 overruns:0 frame:0
TX packets:154 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:33249 (32.4 KiB) TX bytes:20170 (19.6 KiB)

O campo MTU:1500 signfica que o padrão esta em 1500 MTU.

Agora vamos Iniciar os passos para testar e configurar o JUMB FRAME.

####### Testando o envio de Pacotes para constatação de quebra dos pacotes #######

# NO01
ping -s 8192 -M do 192.168.17.24 -c 5

# NO02
ping -s 8192 -M do 192.168.17.25 -c 5

ping -s 8192 -M do 192.168.56.200 -c 5
PING 192.168.56.200 (192.168.56.200) 8192(8220) bytes of data.
From 192.168.56.101 icmp_seq=1 Frag needed and DF set (mtu = 1500)
From 192.168.56.101 icmp_seq=1 Frag needed and DF set (mtu = 1500)
From 192.168.56.101 icmp_seq=1 Frag needed and DF set (mtu = 1500)
From 192.168.56.101 icmp_seq=1 Frag needed and DF set (mtu = 1500)
From 192.168.56.101 icmp_seq=1 Frag needed and DF set (mtu = 1500)

— 192.168.56.200 ping statistics —
0 packets transmitted, 0 received, +5 errors

####### Podemos ver que fragmentou e gerou erros com o Frag needed and DF set.

####### Para habilitar os Jumbo Frames, execute este comando nos dois Nós, como root #######

ifconfig eth0 mtu 9000

####### Para que a alteação seja permanente, adicione uma linha com “MTU 9000? no arquivo “/etc/sysconfig/network-script/ifcfg-eth0
####### Testar para verificar fragmentação de pacotes antes da alteração:

# NO01
ping -s 8192 -M do 192.168.56.200 -c 5

# NO02
ping -s 8192 -M do 192.168.56.200 -c 5

####### Testar envio de pacotes sem quebra depois de configurado:

# NO01
ping -s 9000 -M do 192.168.17.24 -c 5

# NO02
ping -s 9000 -M do 192.168.17.25 -c 5

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s