O FreeBSD fornece a interface lagg(4) que pode ser usada para agregar várias interfaces de rede em uma interface virtual para fornecer failover e agregação de links. O failover permite que o tráfego continue a fluir, desde que pelo menos uma interface de rede agregada tenha um link estabelecido. A agregação de links funciona melhor em switches compatíveis com LACP, pois esse protocolo distribui o tráfego bidirecionalmente ao responder à falha de links individuais.
Os protocolos de agregação suportados pela interface lagg determinam quais portas são usadas para o tráfego de saída e se uma porta específica aceita tráfego de entrada. Os seguintes protocolos são suportados pelo lagg(4):
Este modo envia e recebe tráfego somente através da porta principal. Se a porta principal ficar indisponível, a próxima porta ativa será usada. A primeira interface adicionada à interface virtual é a porta principal e todas as interfaces adicionadas posteriormente são usadas como dispositivos de failover. Se ocorrer um failover em uma porta não mestre, a porta original se tornará a principal quando estiver disponível novamente.
Cisco® Fast EtherChannel® (FEC) é encontrado em versões anteriores de switches Cisco ®. Ele fornece uma configuração estática e não negocia a agregação com o par ou troca quadros para monitorar o link. Se o switch suportar LACP, isso deve ser usado em seu lugar.
O protocolo de controle de agregação de links IEEE® 802.3ad (LACP) negocia um conjunto de links agregáveis com o peer em um ou mais grupos agregados de links (LAGs). Cada LAG é composto de portas da mesma velocidade, configuradas para operação full-duplex e o tráfego é balanceado entre as portas no LAG com a maior velocidade total. Normalmente, há apenas um LAG que contém todas as portas. No caso de alterações na conectividade física, o LACP convergirá rapidamente para uma nova configuração.
O LACP equilibra o tráfego de saída nas portas ativas com base nas informações de hash do cabeçalho do protocolo e aceita tráfego de entrada de qualquer porta ativa. O hash inclui o endereço Ethernet de origem e destino e, se disponível, a tag VLAN e o endereço de origem e destino IPv4 ou IPv6.
Esse modo distribui o tráfego de saída usando um agendador round-robin por meio de todas as portas ativas e aceita tráfego de entrada de qualquer porta ativa. Como esse modo viola a ordenação de quadros Ethernet, ele deve ser usado com cautela.
Esta seção demonstra como configurar um switch Cisco® e um sistema FreeBSD para balanceamento de carga LACP. Em seguida, ele mostra como configurar duas interfaces Ethernet no modo de failover, além de como configurar o modo de failover entre uma Ethernet e uma interface sem fio.
Este exemplo conecta duas interfaces Ethernet fxp(4) em uma máquina FreeBSD às duas primeiras portas Ethernet em um switch Cisco® como um link de carga única balanceada e tolerante a falhas. Mais interfaces podem ser adicionadas para aumentar o rendimento e a tolerância a falhas. Substitua os nomes das portas Cisco®, dos dispositivos Ethernet, do número do grupo de canais e do endereço IP mostrado no exemplo para corresponder à configuração local.
A ordenação de quadros é obrigatória em links Ethernet e qualquer tráfego entre duas estações sempre flui pelo mesmo link físico, limitando a velocidade máxima àquela de uma interface. O algoritmo de transmissão tenta usar o máximo de informações possível para distinguir diferentes fluxos de tráfego e equilibrar os fluxos entre as interfaces disponíveis.
No switch Cisco®, adicione as interfaces FastEthernet0/1
e FastEthernet0/2
ao grupo de canais 1
:
interface
!FastEthernet0/1
channel-group1
mode active channel-protocol lacpinterface
FastEthernet0/2
channel-group1
mode active channel-protocol lacp
No sistema FreeBSD, crie a interface lagg(4) usando as interfaces físicas fxp0
e fxp1
e suba as interfaces com o endereço IP de 10.0.0.3/24
:
#
ifconfig
fxp0
up#
ifconfig
fxp1
up#
ifconfig
lagg
create0
#
ifconfig
lagg
up laggproto lacp laggport0
fxp0
laggportfxp1
10.0.0.3/24
Em seguida, verifique o status da interface virtual:
#
ifconfig
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=8<VLAN_MTU> ether 00:05:5d:71:8d:b8 inet 10.0.0.3 netmask 0xffffff00 broadcast 10.0.0.255 media: Ethernet autoselect status: active laggproto lacp laggport: fxp1 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING> laggport: fxp0 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>lagg
0
Portas marcadas como ACTIVE
fazem parte do LAG que foi negociado com o switch remoto. O tráfego será transmitido e recebido através dessas portas ativas. Adicione -v
ao comando acima para ver os identificadores LAG.
Para ver o status da porta no switch Cisco®:
switch# show lacp neighbor
Flags: S - Device is requesting Slow LACPDUs
F - Device is requesting Fast LACPDUs
A - Device is in Active mode P - Device is in Passive mode
Channel group 1 neighbors
Partner's information:
LACP port Oper Port Port
Port Flags Priority Dev ID Age Key Number State
Fa0/1 SA 32768 0005.5d71.8db8 29s 0x146 0x3 0x3D
Fa0/2 SA 32768 0005.5d71.8db8 29s 0x146 0x4 0x3D
Para mais detalhes, digite show lacp neighbor detail
.
Para manter esta configuração através de reinicializações, adicione as seguintes entradas ao /etc/rc.conf
no sistema FreeBSD:
ifconfig_fxp0
="up" ifconfig_fxp1
="up" cloned_interfaces="lagg
" ifconfig_0
lagg
="laggproto lacp laggport0
fxp0
laggportfxp1
10.0.0.3/24
"
O modo de failover pode ser usado para alternar para uma interface secundária se o link for perdido na interface principal. Para configurar o failover, certifique-se de que as interfaces físicas subjacentes estejam ativadas e crie a interface lagg(4). Neste exemplo, fxp0
é a interface principal, fxp1
é a interface secundária e a interface virtual recebeu um endereço IP de 10.0.0.15/24
:
#
ifconfig
fxp0
up#
ifconfig
fxp1
up#
ifconfig
lagg
create0
#
ifconfig
lagg
up laggproto failover laggport0
fxp0
laggportfxp1
10.0.0.15/24
A interface virtual deve ser algo como isto:
#
ifconfig
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=8<VLAN_MTU> ether 00:05:5d:71:8d:b8 inet 10.0.0.15 netmask 0xffffff00 broadcast 10.0.0.255 media: Ethernet autoselect status: active laggproto failover laggport: fxp1 flags=0<> laggport: fxp0 flags=5<MASTER,ACTIVE>lagg
0
O tráfego será transmitido e recebido em fxp0
. Se o link for perdido em fxp0
, fxp1
se tornará o link ativo. Se o link for restaurado na interface principal, ele se tornará novamente o link ativo.
Para manter essa configuração através de reinicializações, adicione as seguintes entradas ao /etc/rc.conf
:
ifconfig_fxp0
="up" ifconfig_fxp1
="up" cloned_interfaces="lagg
" ifconfig_0
lagg
="laggproto failover laggport0
fxp0
laggportfxp1
10.0.0.15/24
"
Para usuários de laptop, geralmente é desejável configurar o dispositivo sem fio como secundário, que é usado somente quando a conexão Ethernet não está disponível. Com lagg(4), é possível configurar um failover que preferia a conexão Ethernet por motivos de desempenho e de segurança, mantendo a capacidade de transferência dados através da conexão sem fio.
Isso é obtido substituindo o endereço MAC da interface Ethernet com o da interface wireless.
Em teoria, o endereço MAC da Ethernet ou da wireless pode ser alterado para corresponder ao outro. No entanto, algumas interfaces wireless populares não têm suporte para substituir o endereço MAC. Portanto, recomendamos substituir o endereço MAC da Ethernet para esse fim.
Se o driver para a interface wireless não estiver carregado no kernel GENERIC
ou customizado, e o computador estiver rodando o FreeBSD 12.1, carregue o .ko
correspondente no arquivo /boot/loader.conf
adicionando
e reiniciando a maquina. Outra forma melhor, é carregar o driver no arquivo driver
_load="YES"/etc/rc.conf
adicionando a variável kld_list
(veja rc.conf(5) para maiores detalhes) nesse arquivo e reiniciar. Isso é necessário porque de outra forma o driver não estará carregado no tempo em que a interface lagg(4) for configurada.
Neste exemplo, a interface Ethernet, re0
, é a interface principal e a interface sem fio, wlan0
, é o failover. A interface wlan0
foi criada a partir da interface wireless ath0
, e a interface Ethernet será configurada com o endereço MAC da interface wireless. Primeiro, determine o endereço MAC da interface wireless:
#
ifconfig
wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 ether b8:ee:65:5b:32:59 groups: wlan ssid Bbox-A3BD2403 channel 6 (2437 MHz 11g ht/20) bssid 00:37:b7:56:4b:60 regdomain ETSI country FR indoor ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF AES-CCM 2:128-bit txpower 30 bmiss 7 scanvalid 60 protmode CTS ampdulimit 64k ampdudensity 8 shortgi -stbctx stbcrx -ldpc wme burst roaming MANUAL media: IEEE 802.11 Wireless Ethernet MCS mode 11ng status: associated nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>wlan0
Substitua wlan0
para corresponder ao nome da interface wireless do sistema. A linha ether
conterá o endereço MAC da interface especificada. Agora, altere o endereço MAC da interface Ethernet subjacente:
#
ifconfig
re0
etherb8:ee:65:5b:32:59
Suba a interface sem fio (substituindo FR
pelo seu próprio código de país com duas letras), mas não defina um endereço IP:
#
ifconfig
wlan0
create wlandevath0
countryFR
ssidmy_router
up
Certifique-se de que a interface re0
esteja ativa, então crie a interface lagg(4) com a re0
como master com failover para awlan0
:
#
ifconfig
re0
up#
ifconfig
lagg
create0
#
ifconfig
lagg
up laggproto failover laggport0
re0
laggportwlan0
A interface virtual deve ser algo como isto:
#
ifconfig
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=8<VLAN_MTU> ether b8:ee:65:5b:32:59 laggproto failover lagghash l2,l3,l4 laggport: re0 flags=5<MASTER,ACTIVE> laggport: wlan0 flags=0<> groups: lagg media: Ethernet autoselect status: activelagg
0
Em seguida, inicie o cliente DHCP para obter um endereço IP:
#
dhclient
lagg
0
Para manter essa configuração através de reinicializações, adicione as seguintes entradas ao /etc/rc.conf
:
ifconfig_re0
="etherb8:ee:65:5b:32:59
" wlans_ath0
="wlan0" ifconfig_wlan0="WPA" create_args_wlan0="countryFR
" cloned_interfaces="lagg
" ifconfig_0
lagg
="up laggproto failover laggport0
re0
laggport wlan0 DHCP"
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.