Najpopularniejszym obecnie protokołem agregacji portów jest LACP.
Do zagregowania kart w systemie operacyjnym najlepiem użyć takich samych kart. A sama konfiguracja w systemach z rodziny RedHat jest bardzo prosta i ogranicza się do edycji plików konfiguracyjnych w /etc/sysconfig/network-scripts, obecnie nie jest wymagane definiowanie grup portów w modprobe, gdyż istnieje opcja BONDING_OPTS, którą wpisuje się w konfiguracji interfejsu.
Przejdźmy zatem do konfiguracji agregacji, w linuksie zwanej wiązaniem – bondingiem, efektem takiej konfiguracji powinien być nowy interfejs o nazwie bond.
Rozpoczynamy pracę od konfiguracji dwóch fizycznych interfejsów sieciowych. Ja wykorzystam porty eth2 oraz eth3.
Konfiguracja interfejsu eth2
DEVICE=eth2 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=no SLAVE=yes MASTER=bond0
Bliźniacza konfiguracja interfejsu eth3
DEVICE=eth3 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static SLAVE=yes MASTER=bond0
Najciekawszym elementem konfiguracji bondingu w linuksie jest utworzenie nowego interfejsu sieciowego. Aby go zainicjować należy utworzyć plik w /etc/sysconfig/network-scripts o nazwie ifcfg-bond0
touch /etc/sysconfig/network-scripts/ifcfg-bond0
teraz utworzymy jego konfigurację
DEVICE=bond0 TYPE=Ethernet NM_CONTROLLED=no ONBOOT=yes BOOTPROTO=static BONDING_OPTS="mode=802.3ad lacp_rate=1 xmit_hash_policy=layer3+4 miimon=100"
Po tej operacji, polecam ustawić właściwe kontekty dla selinux, jeżeli wykorzystujemy
restorecon -FFrv /etc/sysconfig
Czas na odnowienie konfiguracji sieciowej, polecam restart maszyny lub polecenie
service network restart
Interfejs powinien się utworzyć, jeżeli chcemy zweryfikować jego konfigurację można wyświetlić
cat /prot/net/bonding/bond0
Po stronie systemu to wszystko, jeszcze trzeba skonfigurować przełącznik sieciowy, aby obsługiwał oba porty w LACP.
Ja wykorzystuję w domowym laboratorium switcha Cisco 3550, który obsługuje LACP i dla niego zamieszczam konfigurację.
Interfejs eth2 jest wpięty do portu GigabitEthernet0/1, a eth3 do portu Gi0/2.
Najpierw utworzymy kanał, czyli port channel, ponieważ planuję puszczać w nim ruch oparty na tagowanych VLAN-ach, konfiguracja wygląda następująco
interface Port-channel1 switchport trunk encapsulation dot1q switchport trunk allowed vlan 1 switchport mode trunk
Mając tak skonfigurowany port channel, możemy przypisać go do interfejsów spiętych z naszym systemem
interface GigabitEthernet0/1 channel-group 1 mode active end
interface GigabitEthernet0/2 channel-group 1 mode active end
Obecnie oba interfejsy powinny być już członkami port-channel1, aby zweryfikować, czy wszystko działa, z powrotem przejdźmy do konfiguracji port-channel1 i skonfigurujmy więcej vlanów tagowanych.
interface Port-channel1 switchport trunk allowed vlan 1,100,101,200,201
Po dodaniu VLANów w port-channelu1 sprawdzam, jak wygląda konfiguracja VLANów, dla portów GigabitEthernet0/1 oraz 0/2
show running-config interface gigabitethernet0/1 show running-config interface gigabitethernet0/2
U mnie wszystko zadziałało i interfejsy posiadają w konfiguracji te same VLAN-y, które skonfigurowaliśmy dla PortChannel1