Łączenie portów w logiczny interfejs (LAG)

Damian Stelmach

Wyobraźmy sobie sytuację, w której musimy połączyć ze sobą dwa przełączniki. Żaden problem, wystarczy jedynie użyć odpowiedniego przewodu:

Cisco switch

Co się jednak stanie, kiedy łącze ulegnie awarii? Urządzenia podłączone zarówno do jednego jak i drugiego przełącznika stracą możliwość wzajemnej komunikacji! Jak zatem zapobiec takiej sytuacji? Istnieje bardzo proste rozwiązanie a mianowicie użycie nadmiarowej ilości połączeń pomiędzy urządzeniami. Dzięki temu awaria jednego przewodu nie spowoduje braku dostępu do sieci dla urządzeń, a dodatkowo zwiększy nam się ogólna przepustowość łącza pomiędzy urządzeniami:

Cisco switch 2

Niestety takie rozwiązanie powoduje, że jedno z łączy, przez cały czas pozostaje nieaktywne. Dopiero po awarii jednego, uruchomione zostaje drugie. Dzieje się tak dlatego, że na przełącznikach sieciowych działa protokół STP (ang. Spanning Tree Protocol), którego zadaniem jest zapobieganie pętli ramek, jakie mogę powstać w przypadku użycia nadmiarowej ilości połączeń pomiędzy przełącznikami.

Aby można było wykorzystać większą ilość połączeń, możemy albo wyłączyć protokół STP, co jest bardzo ryzykowne, bo może doprowadzić do paraliżu całe sieci, albo możemy wykorzystać funkcjonalność LAG (ang. Link Aggregation Port), zwaną w technologii CISCO kanałem ethernetowym (ang. Etherchannel) i połączyć klika fizycznych interfejsów w jeden logiczny. Dzięki czemu załatwimy sobie temat niebezpieczeństwa wystąpienia awarii związanego z wykorzystaniem tylko jednego przewodu łączącego urządzenia, a przy okazji nie będziemy zmuszeni wyłączyć STP na przełącznikach.

Konfiguracja takiej funkcjonalności opisanej w standardzie 802.3ad jest specjalnie skomplikowana, dlatego zanim ja zrealizujemy no to kilka słów na temat metod takiego łączenia portów. Do dyspozycji mamy dwie drogi, albo statyczną konfigurację bez użycia protokołów sieciowych, lub też dynamiczną, z wykorzystaniem jednego z dwóch protokołów sieciowych, które taką agregację, takie łączenie umożliwiają. Metoda statyczna ma tę przewagę nad dynamiczną, że nie wykorzystuje do tego żadnych protokołów sieciowych, dzięki temu w naszej sieci nie wysyłane są dodatkowe dane generowane przez te protokoły.

W przypadku agregacji dynamicznej, stosuje się protokoły PAgP (ang. Port Aggregation Protocol) oraz LACP (ang. Link Aggregation Control Protocol). Zasadnicza różnica między nimi jest taka, że ten pierwszy jest własnością CISCO i wspierany jest tylko na urządzeniach tej firmy, chociaż najnowsze urządzenia mogą go już nie obsługiwać, drugi natomiast to standard otwarty, z którego korzystają wszystkie urządzenia, w tym również urządzenia CISCO. Zasadniczo działanie tych protokołów jest zbliżone dlatego decyzja, który wybrać zależy tak naprawdę od tego jakie urządzenia macie w swojej sieci. Jeśli macie sprzęt tylko CISCO to śmiało możecie zastosować protokół PAgP, jeśli w sieci macie mieszankę, albo tylko sprzęt innych marek no to wyboru nie ma i należy użyć protokołu LACP.

Tworząc grupę portów należy mieć na uwadze kilka kwestii:

  • porty muszą pracować z tą samą szybkością (nie łączymy ze sobą portów np. 100 Mb/s i 1Gb/s) i w trybie pełnego duplexu czyli muszą potrafić jednocześnie przesyłać i odbierać dane;
  • maksymalnie możemy utworzyć na przełączniku do 6 grup portów, przy czym maksymalna liczba portów w grupie wynosi 8;
  • biorąc pod uwagę algorytm rozdzielający obciążenia na poszczególne porty lepiej tworzyć grupy, na które składają się 2, 4 albo 8 portów.

W tabeli poniżej widać jak procentowo rozkładana jest przepustowość w zależności od liczby portów jakie składają się na całą grupę:

Cisco LAG

Podział ten, który na pierwszy rzut oka może wydawać się nielogiczny, wynika z działania algorytmu, który każdemu z portów przypisuje określoną wartość liczbową, przy czym suma liczb w całym kanale musi wynosić 8. Jeśli przykładowo mamy 3 porty w grupie to pierwszy i drugi port dostaną 3, a że do sumy 8 brakuje liczby dwa no to ten trzeci otrzyma właśnie 2, dlatego też w takim przypadku obciążenie będzie wynosiło po 37,5% na pierwszych dwóch portach i 25% na trzecim. Inny przykład: jeśli w kanale jest pięć portów no to pierwsze 3 porty oznaczone zostaną liczbą 2, a pozostałe dwa porty liczbą 1, bo nie może wystąpić taka sytuacja, iż jeden z portów nie otrzyma żadnej liczby. Wówczas obciążenie dla poszczególnych łączy będzie takie, że po 25% przypadnie na 3 pierwsze porty, a po 12,5% na porty 4 i 5.

Statyczna konfiguracja LAG, gdzie utworzona zostaje pierwsza grupa, na którą składać się będą porty 1 i 2 wygląda następująco:

  • s1> enable
  • s1# conf t
  • s1(config)# interface range fastEthernet 0/1-2
  • s1(config-if-range)# channel-group 1 mode on

Oczywiście taką konfigurację należy przeprowadzić również na drugim przełączniku. Wydając polecenia w trybie uprzywilejowanym show etherchannel oraz show etherchannel summary możemy wyświetlić sobie podsumowanie wykonanych operacji:

Etherchannel

Teraz konfiguracja dynamiczna z wykorzystaniem protokołu PAgP. Tym razem utworzymy sobie drugą grupę, na którą składać się będą porty 3 i 4:

  • s1> enable
  • s1# conf t
  • s1(config)# interface range fastEthernet 0/3-4
  • s1(config-if-range)# channel-group 2 mode desirable

Na koniec konfiguracja dynamiczna z wykorzystaniem protokołu LACP. Tworzymy trzecią grupę, na którą składać się będą porty 5 i 6:

  • s1> enable
  • s1# conf t
  • s1(config)# interface range fastEthernet 0/5-6
  • s1(config-if-range)# channel-group 3 mode active

Jak widzicie konfiguracja nie jest specjalnie skomplikowana, ogranicza się do dwóch poleceń, pamiętając, że polecenia te należy wykonać na dwóch urządzeniach. Patrząc na to realnie i praktycznie, jeśli macie dostęp do konfiguracji obu urządzeń to tak naprawdę nie ma większego znaczenia, którą metodę wybierzecie. Równie dobrze sprawdzi się konfiguracja statyczna, jak i dynamiczna. Pamiętajcie, że po zagregowaniu łączy, awaria jednego przewodu wchodzącego w skład całej grupy nie powoduje awarii całego kanału ethernetowego.