Protokół GLBP

Zagadnieniem jakim dziś się zajmiemy jest redundancja sieci LAN. W ostatnich artykułach omawiane były protokoły HSRP i VRRP. W tym artykule skupimy się na trzecim protokole jakim jest protokół GLBP.

Protokół GLBP- co to takiego?

W skrócie mówiąc protokół GLBP (ang. Gateway Load Balancing Protocol) jest zastrzeżonym protokołem firmy Cisco, który uzupełniając o podstawowe funkcje równoważenia obciążenia niweluje ograniczenia nadmiarowości. W przypadku HSRP czy VRRP jeden router był głównym czyli masterem, który to przekazywał pakiety, a inne routery w tej sieci pełniły rolę zastępczą i były „uśpione”. W GLBP jest inaczej. Ten protokół pozwala na to aby wszystkie routery lub switche w tym samym czasie mogły przepuszczać pakiety.

Jak to wygląda w praktyce? W protokole GLBP występują dwa kluczowe komponenty AVG oraz AVF.

AVG (ang. Active Virtual Gateway) funkcjonuje jako responder ARP dla grupy GLBP. Odpowiedzi zawierają wirtualne adresy MAC, które AVG przesyła do różnych hostów. W związku z tym jeden
z hostów otrzyma MAC adres ścieżką X przez bramę X, a kolejny host otrzyma MAC ścieżką Y przez bramę Y. W grupie GLBP maksymalnie mogą być 4 urządzenia. I tak jak w przypadku HSRP i VRRP urządzeniem AVG zostaje to, które ma wyższy priorytet, a jeśli są one takie same to rozstrzyga najwyższy adres IP. W tym protokole każdy z routerów występujących w danej sieci otrzymuje własny adres MAC, ale urządzeniem, które będzie zajmować się odpowiadaniem na zapytania ARP zostaje AVG. AVG umieszcza odpowiedni MAC adres w ramce, która jest przesyłana do zdalnej sieci kierowana do bramy wybranej przez to właśnie urządzenie. W tym protokole adres MAC wygląda następująco np.:

 00:00:AA:00:xx:yy
 xx - jest to grupa GLBP
 yy - jest to numer routera w danej grupie GLBP 

Natomiast AVF (ang. Active Virtual Forwarder) odpowiada za przekazywanie pakietów wysyłanych na adres MAC, który został zwrócony przez AVG. Dla każdej grupy GLBP może być wiele takich pracujących wirtualnych usług.

Konfiguracja GLBP 

Konfigurację tego protokołu przeprowadzimy według takiego samego schematu jak VRRP w poprzednim artykule. To pomoże zobaczyć różnice w konfiguracji i działaniu tych protokołów. 

Najpierw należy wykonać wstępną adresację i podstawową konfigurację sieci LAN według powyższego schematu. Wykonajmy poniższe kroki:

  • Adresacja interfejsów na routerze 1
 R1(config)#interface fastEthernet 0/0
 R1(config)#ip address 192.168.1.2 255.255.255.0
 R1(config)#no shut
 R1(config)#interface fastEthernet 1/0
 R1(config)#ip address 192.168.2.1 255.255.255.0
 R1(config)#no shut 
  • Routing statyczny na R1
R1(config)#ip route 0.0.0.0 0.0.0.0 f1/0

Adresacja interfejsów na routerze 2

 R2(config)#interface fastEthernet 0/0
 R2(config)#ip address 192.168.2.2 255.255.255.0
 R2(config)#no shut
 R2(config)#interface fastEthernet 1/0
 R2(config)#ip address 192.168.1.3 255.255.255.0
 R2(config)#no shut 
  • Routing statyczny na R2
R2(config)#ip route 0.0.0.0 0.0.0.0 f0/0

Adresacja interfejsów na routerze 3, który imituje chmurę

 R3(config)#interface fastEthernet 0/0
 R3(config)#ip address 192.168.2.10 255.255.255.0
 R3(config)#no shut
 R3(config)#interface loop0
 R3(config)#ip address 4.2.2.2 255.255.255.0
 R3(config)#no shut 
  • Routing statyczny na R3
R3(config)#ip route 0.0.0.0 0.0.0.0 f0/0

Gdy wykonamy powyższe kroki to można przystąpić do konfiguracji GLBP. Pierwszym elementem jest ustawienie się na interfejsie f0/0 na routerze R1 i wydania polecenia glbp[numer grupy] ip [wirtualny adres ip].

 R1(config)#interface fastEthernet 0/0
 R1(config-if)#glbp 1 ip 192.168.1.1 

To samo polecenie należy wydać na routerze R2 tylko na interfejsie f1/0 według naszego schematu.

 R2(config)#interface fastEthernet 1/0
 R2(config-if)#glbp 1 ip 192.168.1.1 

Podstawowa konfiguracja GLBP została wykonana. Poleceniem show glbp można przejrzeć konfigurację tego protokołu na routerze.

 R1#sh glbp
 FastEthernet0/0 - Group 1
 State is Active
 1 state change, last state change 00:01:12
 Virtual IP address is 192.168.1.1
 Hello time 3 sec, hold time 10 sec
 Next hello sent in 0.736 secs
 Redirect time 600 sec, forwarder time-out 14400 sec
 Preemption disabled
 Active is local
 Standby is unknown
 Priority 100 (default)
 Weighting 100 (default 100), thresholds: lower 1, upper 100 

Na powyższym listingu możemy zauważyć kilka istotnych informacji w konfiguracji GLBP. Po pierwsze Router R1 osiąga status ACTIVE, a pozostałe routery w tej sieci będą posiadały status STANDBY. Drugą ważną informacją jest czas HELLO, który w GLBP jest ustawiony na 3 sekundy, a czas HOLD na 10 sekund. Ponadto priorytety mają wartość 100, to podobnie jak w przypadku konfiguracji HSRP.

Kolejny listing jest kontynuacją poprzedniego. W nim możemy dostrzec informację dotyczącą load balancingu, który odgrywa w tym protokole istotną rolę. Metoda round-robin, czyli każde urządzenie w sieci otrzymuje inny adres MAC w ARP. To powoduje, że ruch jest zrównoważony. Pakiety będą rozprowadzone i przez bramę R1 oraz R2 w przypadku naszego schematu. Ponadto w listingu zawarte są adresy MAC interfejsów routerów w grupie GLBP. Warto wspomnieć, że w GLBP istnieją jeszcze dwie inne metody balancingu. To host-dependent oraz weighted. Czym się różnią? Pierwsza z nich pozwala na określenie hosta i określić mu konkretną bramę. Druga natomiast pozwala na określenie konkretnych proporcji podziału na różne bramy.

 Load balancing: round-robin
 Group members:
 ca01.46dc.0000 (192.168.1.2) local
 ca02.2c2c.001c (192.168.1.3)
 There are 2 forwarders (1 active) 

Dalsza część listingu zawiera dane dotyczące urządzeń przekazujących pakiety. Są one opisane w tej konfiguracji jako FORWARDER. Wśród tych informacji możemy odczytać ich status oraz wirtualny adres MAC.

 Forwarder 1
 State is Active
 1 state change, last state change 00:01:02
 MAC address is 0007.b400.0101 (default)
 Owner ID is ca01.46dc.0000
 Redirection enabled
 Preemption enabled, min delay 30 sec
 Active is local, weighting 100
 Forwarder 2
 State is Listen
 MAC address is 0007.b400.0102 (learnt)
 Owner ID is ca02.2c2c.001c
 Redirection enabled, 599.520 sec remaining (maximum 600 sec)
 Time to live: 14399.520 sec (maximum 14400 sec)
 Preemption enabled, min delay 30 sec
 Active is 192.168.1.3 (primary), weighting 100 (expires in 11.392 sec) 

Wydajmy następnie polecenie show GLBP brief

 R1#sh glbp brief
 Interface   Grp  Fwd Pri State    Address         Active router   Standby router
 Fa0/0       1    -   100 Active   192.168.1.1     local           192.168.1.3
 Fa0/0       1    1   -   Active   0007.b400.0101  local           -
 Fa0/0       1    2   -   Listen   0007.b400.0102  192.168.1.3     -

To polecenie wydane na routerze zwróci nam okrojone informacje konfiguracji GLBP. Na powyższym listingu możemy zauważyć znak [-] w pierwszym wierszu. Tym znakiem oznaczone jest urządzenie AVG, które odpowiada na zapytania ARP. Możemy odczytać jakie to urządzenie w naszej sieci, do jakiej grupy jest przypisane, jego status oraz adres ip przypisany do konkretnego interfejsu.

Testowanie konfiguracji

Aby przetestować jak protokół GLBP funkcjonuje w praktyce oraz sprawdzić poprawności jego działania wykonamy pewną symulację. Na urządzeniu końcowym w naszej sieci jakim jest PC1 uruchomimy polecenie ping na adres 4.2.2.2, czyli w naszym schemacie wyjście na świat, a następnie będziemy przeglądać wpisy w tablicy ARP. 

Lecz zanim przystąpimy do testowania, na początku należy przejrzeć wpisy w tablicy ARP. Aby tego dokonać należy wejść w tryb wiersza poleceń na urządzeniu końcowym i wydać komendę arp -a.
W naszym przypadku testujemy protokół w programie GNS3. Więc wchodzimy w tryb konsoli urządzenia końcowego i wydajemy polecenie arp.

 PC1> arp
 arp table is empty 

Otrzymujemy informację, że tablica jest pusta. Gdyby w tablicy znajdowały się jakieś wpisy musimy ją wyczyścić poleceniem clear arp, jeśli chodzi o program GNS3. Natomiast w wierszu poleceń Windows polecenie arp -d.

PC1> clear arp

Na powyższym listingu możemy zauważyć, że status routera R1 od razu zmienił się na Init, natomiast router R2 z automatu zmienił swój na Master.

Kolejnym krokiem jaki wykonamy jest wydania polecenia na stacji PC1 ping na adres 4.2.2.2, tj. adres port wychodzącego na zewnątrz. Następnie jak wydamy polecenie sh arp będziemy mogli zobaczyć, które urządzenie jest bramą domyślną.

 PC1> ping 4.2.2.2
 84 bytes from 4.2.2.2 icmp_seq=1 ttl=254 time=42.460 ms
 84 bytes from 4.2.2.2 icmp_seq=2 ttl=254 time=45.892 ms
 84 bytes from 4.2.2.2 icmp_seq=3 ttl=254 time=45.098 ms
 84 bytes from 4.2.2.2 icmp_seq=4 ttl=254 time=45.262 ms
 84 bytes from 4.2.2.2 icmp_seq=5 ttl=254 time=33.290 ms
 PC1> sh arp
 00:07:b4:00:01:01  192.168.1.1 expires in 114 seconds 

Na powyższym listingu możemy zauważyć, że w tablicy arp znajduje się jeden wpis z adresem MAC 00:07:b4:00:01:01. Ostatnie dwa hekstety potwierdzają, że jest to wirtualny adres, który prowadzi przez Router 1. 

Teraz wyłączymy port fa0/0 na R1 i wykonamy te same polecenia co poprzednio.

 R1(config)#interface fast 0/0
 R1(config-if)#shutdown
 PC1> ping 4.2.2.2
 84 bytes from 4.2.2.2 icmp_seq=1 ttl=254 time=60.916 ms
 84 bytes from 4.2.2.2 icmp_seq=2 ttl=254 time=44.875 ms
 84 bytes from 4.2.2.2 icmp_seq=3 ttl=254 time=46.572 ms
 84 bytes from 4.2.2.2 icmp_seq=4 ttl=254 time=45.183 ms
 84 bytes from 4.2.2.2 icmp_seq=5 ttl=254 time=45.600 ms
 PC1> sh arp
 00:07:b4:00:01:02  192.168.1.1 expires in 111 seconds 

Na powyższym listingu widzimy, że ruch tym razem jest kierowany na wirtualny adres MAC 00:07:b4:00:01:02 na  Routerze 2.

Podsumowanie

Powyższy eksperyment potwierdza poprawność działania protokołu GLBP. W przypadku wystąpienia awarii lub przeciążenia sieci będzie ona nadal działa poprawnie bez żadnych przerw, gdy ten protokół jest odpowiednio skonfigurowany w wewnętrznej sieci. Jego zasada działania jest podobna jak VRRP i HSRP lecz różni się pewnymi aspektami podczas konfiguracji.