Mechanizmy równoważenia obciążenia na routerach

0

Mechanizmy równoważenie obciążenia, czyli przesyłania ruchu różnymi połączeniami, stosuje się w sieciach co najmniej średniej wielkości – takich, gdzie są przynajmniej 2 połączenia umożliwiające przesłanie pakietów do tego samego odbiorcy lub gdzie jest przynajmniej kilka routerów. Balansowanie obciążenia wygląda nieco inaczej w zależności od wielkości sieci i tę specyfikę uwzględnia niniejszy artykuł.

Główne rodzaje routerów występujące w średnich sieciach
W tego rodzaju sieciach często stosuje się w roli routera serwer z zainstalowanym Linuksem. Takie rozwiązanie zapewnia elastyczność, dzięki dużej funkcjonalności zawartej w ogólno dostępnym oprogramowaniu, ale wadą jest konieczność posiadania wiedzy z zakresu administrowania tego rodzaju systemem. Nie należy zapominać również o problemie braku wsparcia. Jako że producent nie otrzymuje wynagrodzenia za stworzone oprogramowanie, nie świadczy wsparcia technicznego. W związku z tym pozostaje poleganie na własnej wiedzy i informacjach dostępnych w ramach społeczności użytkowników danego oprogramowania. Osobiście spotkałem się z przypadkami stosowania tego rodzaju rozwiązań dla połączeń internetowych dochodzących do 1Gbit/s, co jest już dużą wartością dla tego rodzaju routerów.

W przypadku zastosowania routera dedykowanego otrzymujemy specjalizowane urządzenie oraz wsparcie producenta. Jeżeli wybierzemy router klasy korporacyjnej (przeznaczony do średnich i dużych sieci), możemy liczyć na większą liczbę funkcji oraz obszerną dokumentację. Ten rodzaj routera ma przewagę nad opisanym powyżej również pod względem dostępnych interfejsów sieciowych. Należy również pamiętać, że często router pełni role dodatkowe, np. bramy połączeń telefonicznych. To może być dla niektórych zaskoczeniem, ale niektóre routery mogą wręcz działać jako centralki telefoniczne dla kilkunastu telefonów IP.

Równoważenie obciążenia w sieciach średniej wielkości
W sieciach tej wielkości możemy spotkać dwie typowe sytuacje: sieć LAN połączona z dwoma niezależnymi operatorami oraz równoważenie ruchu w ramach własnej sieci.

Sieć z więcej niż jednym wyjściem do Internetu
Tego rodzaju sieci spotkamy tam, gdzie wymagany jest nieprzerwany dostęp do Internetu. Najczęściej są to sieci osiedlowe lub większe firmowe. W przypadku takich sieci najczęściej zależy nam na równoważeniu ruchu wychodzącego z naszej sieci. Użytkownicy sieci mają przyznaną adresację prywatną zamienianą na adresację publiczną przy wyjściu z sieci (NAT).

W przypadku sieci z więcej niż jednym wyjściem należy skonfigurować router tak, aby równo rozkładał ruch, który do niego przychodzi. Najczęściej spotykanym sposobem decydowania, którym połączeniem przesłać pakiet jest algorytm oparty o sesje. Router „zapamiętuje” adres źródłowy, docelowy oraz numery portów każdego połączenia i na tej podstawie kieruje wszystkie pakiety danej sesji tym samym łączem. „Zapamiętywanie” jest realizowane poprzez wykonanie funkcji hash wyżej wymienionych danych. Dzięki temu router ma unikalny ciąg znaków umożliwiający szybkie przekazanie kolejnych pakietów do właściwego łącza. Taka forma równoważenia obciążenia jest skuteczna w zdecydowanej większości przypadków.

Jeżeli jednak użytkownik, łącząc się z jedną usługą, będzie chciał skorzystać z pełnej przepustowości do Internetu, nie będzie to możliwe. Użytkownik będzie w stanie skorzystać jedynie z przepustowości jednego z połączeń. Wynika to właśnie ze specyfiki balansowania obciążenia per sesja.

Możliwe jest również balansowanie per pakiet. Tę metodę jednak rzadko się stosuje ze względu na większe obciążenie routera oraz problemy związane z różnym czasem dotarcia pakietów do celu w ramach jednej sesji. Jeżeli opóźnienie jednej z dróg jest większe niż pozostałych, spowoduje spadek wydajności całej sesji w przypadku połączeń TCP, a w przypadku UDP nawet utratę pakietów, jeżeli opóźnienie będzie zbyt duże. Nie należy zatem stosować tego rodzaju balansowania w sieciach transmitujących dane usług wrażliwych na opóźnienie, np. telefonia czy transmisja wideo w sieciach IP.

Przykład konfiguracji routera linuksowego do balansowania ruchu wychodzącego z sieci:

ip route add $P1_NET dev $IF1 src $IP1 table T1
ip route add default via $P1 table T1
ip route add $P2_NET dev $IF2 src $IP2 table T2
ip route add default via $P2 table T2

ip route add default scope global nexthop via $P1 dev $IF1 weight 1 nexthop via $P2 dev $IF2 weight 1

Więcej na temat konfiguracji tego rodzaju routera można znaleźć m.in. tutaj.

W przypadku niektórych routerów możliwe jest również balansowanie obciążenia na podstawie przepustowości łączy. Router oblicza rozkład ruchu na podstawie przepustowości przypisanej do każdego interfejsu. Domyślnie wartość ta odpowiada przepustowości nominalnej interfejsów. Przykład realizacji balansowania ruchu na routerze 3com serii MSR z wykorzystaniem 3 połączeń:

Przypisanie przepustowości w KB do poszczególnych interfejsów:

system-view
[Sysname] interface ethernet 1/1
[Sysname-Ethernet1/1] load-bandwidth 200
[Sysname-Ethernet1/1] quit
[Sysname] interface atm 1/0
[Sysname-Atm1/0] load-bandwidth 100
[Sysname-Atm1/0] quit
[Sysname] interface serial 2/0
[Sysname-serial2/0] load-bandwidth 300
[Sysname-serial2/0] quit

Balansowanie ruchu odbywa się na podstawie tras z tablicy routingu przez trasy o tym samym koszcie:

Destination/Mask Nexthop Flag OutInterface InnerLabel Token
10.2.1.0/24 10.1.1.2 GSU Eth1/1 Null Invalid
10.2.1.0/24 10.1.2.2 GSU Atm1/1 Null Invalid
10.2.1.0/24 10.1.3.2 GSU Serial1/1 Null Invalid

Równoważenie obciążenia w dużych sieciach
W dużych sieciach komputerowych nie spotkamy już czysto programowego realizowania funkcji routera, co wynika z wymaganej wydajności. W przypadku średnich sieci mamy do czynienia z przepustowością łączy do Internetu rzędu najwyżej kilkunastu megabitów. W dużych sieciach korporacyjnych działa nawet do kilkuset routerów powiązanych ze sobą gigabitowymi połączeniami. Wydajność tego rodzaju routerów sięga 1-2 Mpps (milion pakietów na sekundę). W tego rodzaju zastosowaniach sprawdzają się tylko bardzo wydajne urządzenia.

W tak rozbudowanej sieci jej główna część, czyli szkielet, musi zapewniać redundancję. Oznacza to, że wykorzystanie potencjału łącz nadmiarowych wymaga zastosowania mechanizmów równoważenia obciążenia na kilku połączeniach. Ponieważ podstawowym zadaniem routera jest wyznaczanie tras i przekazywanie pakietów na podstawie adresu IP, również balansowanie ruchu odbywa się na podstawie tras. Urządzenia różnych producentów mogą różnić się nieco funkcjonalnością, w związku z tym ja przedstawię możliwości balansowania ruchu na przykładzie routera rodziny 3Com MSR 50-60
W przypadku tego routera mamy możliwość balansowania ruchu na podstawie tablicy routingu zbudowanej w oparciu o wszystkie dostępne na tym routerze protokoły routingu, jak również statycznie wpisane trasy.

Planując implementację równoważenia obciążenia, należy pamiętać, żeby obciążenie ruchem danego łącza było proporcjonalne do jego przepustowości. Przykładowo: jeżeli mamy podstawowe łącze 1Gb/s oraz zapasowe 100Mb/s, ilość ruchu przesyłanego łączem zapasowym powinna być 10 razy mniejsza w stosunku do łącza podstawowego. Możliwa jest realizacja balansowania ruchu z wykorzystaniem protokołów routingu lub tras statycznych, ponieważ router, analizując drogi wynikające z tablicy routingu, uwzględnia również przepustowości przypisane do poszczególnych interfejsów. Domyślne wartości, oznaczające przepustowość można zmienić, wpływając na sposób dzielenia ruchu, a tym samym obciążenie poszczególnych łączy. Przykład poniżej:

There are/is totally 3 route entry(s) to the same destination network.
Nexthop Packet(s) Bandwidth[KB] Flow(s) Interface
10.1.2.2 142824 100 0 Atm1/0
10.1.1.2 285648 200 0 Ethernet1/1
10.1.3.2 428472 300 0 Serial2/0

Warto również zauważyć, że oprócz wymienionych sposobów równoważenia obciążenia, możliwe jest równoważenia obciążenia w warstwie drugiej modelu ISO/OSI z wykorzystaniem mechanizmu Link aggregation. Wprawdzie mechanizm ten został stworzony dla przełączników, jednak niektóre routery potrafią z niego korzystać. Dzięki temu po połączeniu 4 łączy 1Gbit/s otrzymujemy jeden logiczny jeden interfejs routera o przepustowości 4 Gbit/s.

Równoważenie obciążenia w sieciach operatorskich
Sieci operatorskie charakteryzują się nie tylko dużymi przepustowościami, ale również koniecznością świadczenia dodatkowych usług, w tym m.in. tworzenia sieci wirtualnych (VPN) dla swoich klientów. Bardzo często do świadczenia bardziej zaawansowanych usług wymagane jest wykorzystanie technologii MPLS (Multiprotocol Label Swiching). Technologia ta pozwala na przełączanie pakietów oraz wyznaczanie tras, którymi powinny podążać, w bardziej wydajny sposób. Pakiety oznaczane są specjalnym nagłówkiem, a router pracujący w tym trybie nie kieruje się adresem IP, lecz tym nagłówkiem. Jednak obecnie, przy dużo wydajniejszych routerach, zysk na wydajności przełączania jest nieznaczny. Operatorzy stosują ten mechanizm głównie ze względu na dodatkowe możliwości, np. tworzenie sieci VPN. Także na tym poziomie możliwe jest równoważenie obciążenia.

Jednym z najważniejszych protokołów wykorzystywanych przez operatorów jest BGP. Jest to protokół stworzony i wykorzystywany do łączenia dużych środowisk sieciowych z Internetem. Ma on wiele ciekawych funkcjonalności, ja jednak skupię się tu na dwóch najważniejszych z punktu widzenia równoważenia obciążenia. Aby móc skorzystać z możliwości, jakie daje w tym zakresie BGP, podłączając się do sieci Internet, należy mieć własny Autonomous System (AS). Co istotne za taką opcję trzeba odpowiednio zapłacić. Oprócz tego konieczne jest wykupienie puli adresów publicznie dostępnych. Na to mogą pozwolić sobie tylko duże przedsiębiorstwa lub operatorzy. Dla tych drugich jest to w zasadzie warunek konieczny do działania.

Jeżeli już posiadamy własny AS, możemy podłączyć się do różnych operatorów, korzystając z własnej puli adresowej. Dzięki temu, zmieniając operatora, nie musimy wprowadzać żadnych zmian adresacji we własnej sieci. W praktyce niestety nie wygląda to tak dobrze. Przede wszystkim liczba operatorów operujących w jednym miejscu jest zazwyczaj niewielka. Po drugie kupienie własne AS i adresacji IPv4 jest obecnie bardzo skomplikowane i wymaga wielu formalności. Adresów IPv4 zaczyna brakować, więc bardzo trudno jest uzyskać własną pulę. Tak wygląda świat operatorów.

Pomijając jednak wszystkie te niedogodności, posiadając wszystkie wymagane elementy oraz router wspierający BGP, możemy wpływać nie tylko na to, którym połączeniem ruch będzie wychodził, mamy przede wszystkim możliwość wpływania na to, którym łączem ruch do naszej sieci będzie przychodził. Realizuje się to poprzez atrybuty, które możemy przekazywać sąsiadom. Dwa, które wpływają na wybór trasy, to LOCAL_PREF (local preference) i MED (multi-exit discriminators).

Pseudo równoważenie obciążenia
Oprócz technologii opisanych powyżej można znaleźć również określenia takie jak MSTP (Multiple Spanning Tree Protocol) czy VRRP (Virtual Router Redundancy Protocol). Umożliwiają one taką konfigurację routerów, aby zapasowy router czy łącze mogły być w razie potrzeby wykorzystywane. W praktyce jednak nie umożliwiają one podziału ruchu ze względu na zużywane pasmo, a jedynie liczbę użytkowników, co nie zawsze jest równoważne. Zastanowić się zatem należy, czy w takiej sytuacji warto komplikować konfigurację sieci. Tu również sprawdza się zasada, że im prostsza konfiguracja sieci realizująca zakładane funkcjonalności, tym lepiej.

Dariusz Koralewski, inżynier systemowy w 3Com Polska

PODZIEL SIĘ

BRAK KOMENTARZY

ZOSTAW ODPOWIEDŹ