Post em Destaque

Artigos FreeBSD da Digital Ocean em Português

Compartilhado por Patrick Tracanelli na FUG-BR (FreeBSD User Group do Brasil), que acredito ser de muita importância e de excelente leitura para aqueles que se interessam pelo sistema. Abaixo o texto e os links: Senhores, Compartilho com todos essa boa notícia. O Fernando Pimenta, um dos organizadores...

Leia mais...

Link Aggregation – a solução para não usar 10GbE ainda.

Posted by gondim | Posted in Dicas, FreeBSD, Tecnologia | Posted on 12-05-2012

Tags:, ,

0

Não é de hoje a busca por links de grande capacidade, principalmente por Provedores de Internet. Lembro da época que interfaces de rede Gigabit eram muito caras e vivíamos com redes 10/100. O provedor que trabalho, na época tinha link de 2Mbps quando ainda existiam conexões discadas. A interface de rede que ligava o provedor ao fornecedor do link Internet era uma 3Com 10/100 que atendia muito bem. Mas o crescimento chegou rápido e fomos aumentando nosso link até que chegamos em 100Mbps. Nesse patamar a boa e velha 3Com não atendia mais as necessidades e aí mudamos para interface Intel Gigabit. Continuamos crescendo e hoje nosso link pulou para 1.2Gbps. Mas como colocar 1.2Gbps em uma interface de apenas 1Gbps? Não coloca. Nesse ponto surge a necessidade de um upgrade de equipamento para 10GbE. Bem, são equipamentos extremamente caros e por isso partimos para outra solução conhecida como: Link Aggregation e que o FreeBSD faz muito bem.

Com o Link Aggregation (lagg) você pode adicionar interfaces de rede somando as velocidades e ao mesmo tempo balanceando e servindo de failover. Para o Provedor aqui foi preciso apenas adicionar mais uma interface de rede Intel Gigabit e configurar o lagg e com isso agora temos quase 2Gbps para nos atender sem grandes investimentos.

Irei mostra aqui um exemplo de configuração que inclusive está funcionando hoje em nosso router central que é um FreeBSD 9.0 64bits stable. Este router encontra-se ligado em uma switch com suporte à lagg que interliga nossas Cidades através de um clear channel em fibra.

Primeiramente precisamos do suporte ao lagg ativado. Isso pode ser feito de 2 formas, compilando no kernel ou carregando em tempo de boot.

Para colocar direto no kernel, basta adicionar a linha abaixo no seu kernel, compilar e instalar seu novo kernel.

device          lagg

Caso não queira compilar o kernel com suporte você pode optar por carrega-lo como módulo no boot. Para isso basta adicionar a linha abaixo em /boot/loader.conf:

if_lagg_load=”YES”

Para essa configuração usei o esquema de start_if.<interface> diferente do usado no rc.conf e pode ser lido aqui.

No meu router criei os arquivos /etc/start_if.em2 e /etc/start_if.em3 conforme abaixo:

start_if.em2:

/sbin/ifconfig lagg1 create
/sbin/ifconfig em2 up

A primeira linha estou criando uma interface virtual de link aggregation chamada lagg1. Estou criando a lagg1 porque já tenho uma lagg0 junto ao meu fornecedor de link Internet e no final as configurações serão as mesmas, logo irei mostrar apenas uma.

Na segunda linha apenas levanto a interface em2, deixando-a ligada e sem IP mesmo.

start_if.em3:

/sbin/ifconfig em3 up
/sbin/ifconfig lagg1 laggproto lacp laggport em2 laggport em3 186.xxx.xx.1 netmask 255.255.255.224

Na configuração da outra interface em3 nós levantamos ela sem IP algum e na segunda linha é que configuramos nosso lagg. Onde dizemos que o lagg1 vai usar o protocolo lacp (Link Aggregation Control Protocol). Vai agregar as interfaces em2, em3 e setar o IP 186.xxx.xx.1 na lagg1.

Existem outras opções de protocolo mas o lacp é o mais completo e interessante ao meu ver. Você pode consultar outros protocolos através do: man lagg

Feito isso basta agora você interligar as 2 interfaces de rede nas 2 portas da switch que foram configuradas para fazer o lagg. Simplesmente isso. Para ter certeza que tudo vai funcionar certo, re-inicie o sistema.

Como saber se o lagg está funcionando? Simples também. Faça um ifconfig no lagg1 e veremos algo assim:

lagg1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC>
ether 00:1e:67:07:9d:cc
inet 10.10.10.10 netmask 0xffffffff broadcast 10.10.10.10
inet6 fe80::21e:67ff:fe07:9dcc%lagg1 prefixlen 64 scopeid 0x12
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
media: Ethernet autoselect
status: active
laggproto lacp
laggport: em3 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
laggport: em2 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>

Nas 2 últimas linhas tem que estar como ACTIVE nas 2 interfaces, senão o lagg não estará funcionando.

Para visualizarmos o consumo de banda independente por interface (em2 e em3) ou o somatório (lagg1) podemos instalar e usar o programa nload que está no ports.

# cd /usr/ports/net/nload/

# make install clean

Com o comando “nload -u k” e usando as setas para baixo e para cima você poderá navegar nas interfaces existentes. Abaixo as telas do meu sistema em funcionamento:

Bem é isso. Assim como muitas outras coisas no FreeBSD, essa não poderia deixar de ser tão simples e fácil.

Espero que seja útil e ajude.  😉

Share Button