GLBP - Gateway Load Balancing Protocol


Reference.

https://cisconinja.wordpress.com/2009/02/11/glbp-weights-load-balancing-and-redirection/


GLBP를 제대로 이해하는데 자그마치 2일이 걸렸습니다.. weight개념 까지는 쉬웠는데 threshold를 어떻게 쓰는지 이해가 안되서요. 영어만 잘했어도 쉽게 알아들었을 텐데 영어는 언제나 넘사벽이라서.. 예제 하나하나 해보고 뜯어보는데 시간이 많이 걸렸네요. 그래도 덕분에 기억은 오래갈듯 합니다. 이 글을 통해 타이머조정, 인증(인증은 쉬우니까)을 제외한 GLBP의 전부를 마무리 해봅니다.




HSRP, VRRP는 그룹내에서 하나의 라우터만 액티브라우터가 되어 게이트웨이 역할을 수행하므로 다른 라우터들을 유휴상태로 방치하는 비효율의 문제가 있었다.


이러한 문제점을 극복하고자 네트워크 별로 액티브라우터를 다르게 설정하여 트래픽을 분산할 수도 있으나(Multiple-HSRP, Multiple-VRRP), 한 네트워크에 트래픽이 몰리는 경우 마찬가지로 하나의 라우터에만 트래픽이 집중되므로 궁극적인 해결책이 되진 못한다.


이 문제를 해결하기 위한 것이 GLBP이다. 단일 IP로 게이트웨이를 이중화하고, 여러 라우터로 로드밸런싱도 가능하다. 단, 시스코의 독자적인 프로토콜이므로 모든 장비에서 구현할 수 있는것은 아니다.


GLBP는 라우터마다 별개의 가상 MAC주소를 부여하며 이 MAC주소들을 로드밸런싱 규칙에 따라 ARP응답하여 부하를 분산시킨다.


GLBP 그룹별로 하나의 Active Virtual Gateway가 선출된다. AVG선출의 기준은 AVG Priority가 높은 라우터, 동일할경우 높은 IP를 가진 라우터이다. 이 AVG는 그룹내 라우터들에게 최대 4개의 가상 MAC주소를 부여한다. 2번째 우선순위의 라우터는 Stanby AVG가 된다.


AVG로부터 가상 MAC주소를 부여받은 라우터를 Active Virtual Forwarder라고 한다. AVG가 부여할수 있는 가상 MAC주소가 최대 4개이므로, 최대 동작가능한 AVF의 수도 4개가 된다. 그래서 GLBP에는 Forwarder#1, Forwarder#2, Forwarder#3, Forwarder#4의 4개의 AVF그룹이 있고, GLBP그룹에 참여하는 순서대로 Forwarder#1, Forwarder#2, Forwarder#3, Forwarder#4의 owner가 된다.


GLBP에서 weight는 라우터별로 부하분산할 비율을 결정한다. 성능이 좋은 라우터는 weight를 많이, 반대의 경우 적게 설정한다. 또한 인터페이스 트래킹을 통해 weight를 동적으로 조정하거나 아예 AVF가 되지 못하도록 설정할 수 있다. lower threshold값은 AVF가 되지 못하게 할 weight 임계값, upper threshold값은 다시 AVF가 되게 할 임계값이다.


GLBP의 로드밸런싱 규칙은 3가지를 적용할 수 있다.


1. Round Robin - 가장 간단, ARP요청별로 AVF의 MAC주소를 순차로 응답. 모든 AVF트래픽 동일

2. Weighted - AVF마다 설정된 비율로 부하분산 [Ra% = Wa/(Wa+Wb+Wc+Wd)]

3. Host-dependent - 특정 호스트에게 특정 AVF를 거치도록 설정


======================================================================================




R1부터 순차적으로 AVF가 되도록 하기 위해 커맨드 순서를 다음과 같이 입력한다.



R1(config)#int f 0/0

R1(config-if)#ip add 10.1.1.1 255.255.255.0
R1(config-if)#mac 0.0.1
R1(config-if)#no sh
R1(config-if)#
*Mar  1 00:01:26.239: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
*Mar  1 00:01:27.239: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
R1(config-if)#glbp 1 pre
R1(config-if)#glbp 1 pri 101
R1(config-if)#glbp 1 ip 10.1.1.100
R1(config-if)#ex
R1(config)#
*Mar  1 00:02:05.051: %GLBP-6-STATECHANGE: FastEthernet0/0 Grp 1 state Standby -> Active
R1이 GLBP 1번 그룹의 AVG가 됨
*Mar  1 00:02:15.051: %GLBP-6-FWDSTATECHANGE: FastEthernet0/0 Grp 1 Fwd 1 state Listen -> Active
R1이 GLBP 1번 그룹의 1번 AVF가 됨


R2(config)#int f 0/0
R2(config-if)#ip add 10.1.1.2 255.255.255.0
R2(config-if)#mac 0.0.2
R2(config-if)#no sh
R2(config-if)#
*Mar  1 00:03:27.707: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
*Mar  1 00:03:28.707: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
R2(config-if)#glbp 1 pre
R2(config-if)#glbp 1 pri 102
R2(config-if)#glbp 1 ip 10.1.1.100
R2(config-if)#ex
R2(config)#
*Mar  1 00:03:51.195: %GLBP-6-STATECHANGE: FastEthernet0/0 Grp 1 state Speak -> Active

R2가 GLBP 1번 그룹의 AVG가 됨

*Mar  1 00:04:04.195: %GLBP-6-FWDSTATECHANGE: FastEthernet0/0 Grp 1 Fwd 2 state Listen -> Active

R2가 GLBP 1번 그룹의 2번 AVF가 됨
R1(config)#
*Mar  1 00:07:26.099: %GLBP-6-STATECHANGE: FastEthernet0/0 Grp 1 state Active -> Speak
R1이 AVG에서 박탈됨


R3(config)#int f 0/0
R3(config-if)#ip add 10.1.1.3 255.255.255.0
R3(config-if)#mac 0.0.3
R3(config-if)#no sh
R3(config-if)#
*Mar  1 00:08:45.367: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
*Mar  1 00:08:46.367: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
R3(config-if)#glbp 1 pre
R3(config-if)#glbp 1 pri 103
R3(config-if)#glbp 1 ip 10.1.1.100
R3(config-if)#ex
R3(config)#
*Mar  1 00:09:15.107: %GLBP-6-STATECHANGE: FastEthernet0/0 Grp 1 state Speak -> Active

R3가 GLBP 1번 그룹의 AVG가 됨
*Mar  1 00:09:28.107: %GLBP-6-FWDSTATECHANGE: FastEthernet0/0 Grp 1 Fwd 3 state Listen -> Active

R3가 GLBP 1번 그룹의 3번 AVF가 됨

R2(config)#

*Mar  1 00:13:15.263: %GLBP-6-STATECHANGE: FastEthernet0/0 Grp 1 state Active -> Speak

R2 AVG에서 박탈됨


R4(config)#int f 0/0
R4(config-if)#ip add 10.1.1.4 255.255.255.0
R4(config-if)#mac 0.0.4
R4(config-if)#no sh
R4(config-if)#
*Mar  1 00:08:27.647: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
*Mar  1 00:08:28.647: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
R4(config-if)#glbp 1 pre
R4(config-if)#glbp 1 pri 104
R4(config-if)#glbp 1 ip 10.1.1.100
R4(config-if)#ex
R4(config)#
*Mar  1 00:08:47.767: %GLBP-6-STATECHANGE: FastEthernet0/0 Grp 1 state Speak -> Active

R4가 GLBP 1번 그룹의 AVG가 됨
*Mar  1 00:09:00.767: %GLBP-6-FWDSTATECHANGE: FastEthernet0/0 Grp 1 Fwd 4 state Listen -> Active

R4가 GLBP 1번 그룹의 4번 AVF가 됨

R3(config)#
*Mar  1 00:11:42.179: %GLBP-6-STATECHANGE: FastEthernet0/0 Grp 1 state Active -> Speak

R3가 AVG에서 박탈됨


R5(config)#int f 0/0
R5(config-if)#ip add 10.1.1.5 255.255.255.0
R5(config-if)#mac 0.0.5
R5(config-if)#no sh
R5(config-if)#
*Mar  1 00:09:14.239: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
*Mar  1 00:09:15.239: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up


여기까지 설정하고 GLBP상태를 확인해보면 R4가 AVG로 선정되었으며 Forwarder1은 R1, Forwarder2는 R2, Forwarder3는 R3, Forwarder4는 R4가 된 것을 알 수 있다.


R4(config)#do show glbp brief
Interface   Grp  Fwd Pri State    Address         Active router   Standby router
Fa0/0       1    -   104 Active   10.1.1.100      local           10.1.1.3 첫번째줄이 AVG 상태
Fa0/0       1    1   -   Listen   0007.b400.0101  10.1.1.1        -
Fa0/0       1    2   -   Listen   0007.b400.0102  10.1.1.2        -
Fa0/0       1    3   -   Listen   0007.b400.0103  10.1.1.3        -
Fa0/0       1    4   -   Active   0007.b400.0104  local           -


R5까지 GLBP그룹에 참여시킨다.


R5(config-if)#glbp 1 pre
R5(config-if)#glbp 1 pri 105
R5(config-if)#glbp 1 ip 10.1.1.100
R5(config-if)#ex
R5(config)#
*Mar  1 00:17:06.191: %GLBP-6-STATECHANGE: FastEthernet0/0 Grp 1 state Standby -> Active

R5가 GLBP 1번 그룹의 AVG가 됨


다시한번 GLBP상태를 확인해보면


R5(config)#do sh glbp br
Interface   Grp  Fwd Pri State    Address         Active router   Standby router
Fa0/0       1    -   105 Active   10.1.1.100      local           10.1.1.4
Fa0/0       1    1   -   Listen   0007.b400.0101  10.1.1.1        -
Fa0/0       1    2   -   Listen   0007.b400.0102  10.1.1.2        -
Fa0/0       1    3   -   Listen   0007.b400.0103  10.1.1.3        -
Fa0/0       1    4   -   Listen   0007.b400.0104  10.1.1.4        -


R5가 AVG로 선정되었지만 4개의 AVF그룹에 대해 Listen상태임을 알 수 있다. GLBP는 가상 MAC주소를 4개까지 줄 수 있기에 R5에게 새로운 MAC주소를 주지 않으며 따라서 AVF가 될 수 없다.


R5의 weight를 증가시켜도 R5는 새로운 MAC주소를 받을 수 없다.


R5(config-if)#glbp 1 w 200


R5(config)#do sh glbp 
FastEthernet0/0 - Group 1
  State is Active
    2 state changes, last state change 00:04:31
  Virtual IP address is 10.1.1.100
  Hello time 3 sec, hold time 10 sec
    Next hello sent in 2.012 secs
  Redirect time 600 sec, forwarder time-out 14400 sec
  Preemption enabled, min delay 0 sec
  Active is local
  Standby is 10.1.1.4, priority 104 (expires in 8.440 sec)
  Priority 105 (configured)
  Weighting 200 (configured 200), thresholds: lower 1, upper 200
  Load balancing: round-robin
  Group members:
    0000.0000.0001 (10.1.1.1)
    0000.0000.0002 (10.1.1.2)
    0000.0000.0003 (10.1.1.3)
    0000.0000.0004 (10.1.1.4)
    0000.0000.0005 (10.1.1.5) local
  There are 4 forwarders (0 active)
  Forwarder 1
    State is Listen
    MAC address is 0007.b400.0101 (learnt)
    Owner ID is 0000.0000.0001
    Redirection enabled, 593.464 sec remaining (maximum 600 sec)
    Time to live: 14393.464 sec (maximum 14400 sec)
    Preemption enabled, min delay 30 sec
    Active is 10.1.1.1 (primary), weighting 100 (expires in 3.460 sec)
  Forwarder 2
    State is Listen
    MAC address is 0007.b400.0102 (learnt)
    Owner ID is 0000.0000.0002
    Redirection enabled, 595.456 sec remaining (maximum 600 sec)
    Time to live: 14395.452 sec (maximum 14400 sec)
    Preemption enabled, min delay 30 sec
    Active is 10.1.1.2 (primary), weighting 100 (expires in 5.452 sec)
  Forwarder 3
    State is Listen
    MAC address is 0007.b400.0103 (learnt)
    Owner ID is 0000.0000.0003
    Redirection enabled, 593.208 sec remaining (maximum 600 sec)
    Time to live: 14393.204 sec (maximum 14400 sec)
    Preemption enabled, min delay 30 sec
    Active is 10.1.1.3 (primary), weighting 100 (expires in 3.204 sec)
  Forwarder 4
    State is Listen
    MAC address is 0007.b400.0104 (learnt)
    Owner ID is 0000.0000.0004
    Redirection enabled, 596.772 sec remaining (maximum 600 sec)
    Time to live: 14396.768 sec (maximum 14400 sec)
    Preemption enabled, min delay 30 sec
    Active is 10.1.1.4 (primary), weighting 100 (expires in 6.768 sec)


R5의 weight를 기본값인 100에서 200으로 증가시켜도 AVF가 되지 않는다. AVF의 선정은 GLBP그룹에 참여한 순서대로 되기 때문에 기존의 AVF에 변화가 없는한 R5는 AVG임에도 불구하고 게이트웨이로 향하는 트래픽을 전달할 수 없다.


R1에 루프백을 만들고 인터페이스 트래킹을 구현해보자


R1(config)#int l 0
R1(config-if)#
*Mar  1 00:23:53.495: %LINK-3-UPDOWN: Interface Loopback0, changed state to up
*Mar  1 00:23:54.495: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up
R1(config-if)#ip add 1.1.1.1 255.255.255.0
R1(config-if)#ex
R1(config)#track 1 int l 0 line-protocol
R1(config-track)#ex
R1(config)#int f 0/0
R1(config-if)#glbp 1 w 100 lower 90 upper 95 weight=100, 90이하일 경우 AVF박탈, 95이상일때 AVF회복
R1(config-if)#glbp 1 w track 1 decrement 20 track 1번이 죽으면 설정한 weight에서 20감소
R1(config-if)#ex
R1(config)#int l 0
R1(config-if)#sh 인터페이스 비활성화
R1(config-if)#
*Mar  1 00:25:44.923: %LINK-5-CHANGED: Interface Loopback0, changed state to administratively down
*Mar  1 00:25:45.923: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to down
*Mar  1 00:26:18.171: %GLBP-6-FWDSTATECHANGE: FastEthernet0/0 Grp 1 Fwd 1 state Active -> Listen

1번 AVF에서 박탈당함
R1(config-if)#do sh glbp | section Forwarder 1
  Forwarder 1
    State is Listen
      2 state changes, last state change 00:00:44
    MAC address is 0007.b400.0101 (default)
    Owner ID is 0000.0000.0001
    Preemption enabled, min delay 30 sec
    Active is 10.1.1.5 (secondary), weighting 200 (expires in 7.076 sec)


루프백 인터페이스를 비활성화하면 weight가 100에서 20을 뺀 80이 된다. 80은 lower threshold값인 90보다 낮으므로 R1은 AVF에서 박탈된다. 따라서 대신 놀고있던 R5가 1번 AVF가 되었다. 다만 유의할 점은 Owner ID가 R1의 MAC주소로 변함이 없다는 점이다.


R1(config)#int l 0
R1(config-if)#no sh
R1(config-if)#ex
R1(config)#
*Mar  1 00:42:57.075: %LINK-3-UPDOWN: Interface Loopback0, changed state to up
*Mar  1 00:42:58.075: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up
*Mar  1 00:43:35.927: %GLBP-6-FWDSTATECHANGE: FastEthernet0/0 Grp 1 Fwd 1 state Listen -> Active

R1이 다시 1번 AVF가 됨


R1의 루프백을 다시 활성화시키니 R1의 weight가 100으로 회복되어 원래대로 1번 AVF가 되었다.


다른 케이스로 R5의 F0/0이 죽어있을 때 R1의 루프백을 죽인다면 1번 AVF는 누가 맡을지 확인한다


R5(config)#int f 0/0
R5(config-if)#sh
R5(config-if)#
*Mar  1 00:43:55.655: %GLBP-6-STATECHANGE: FastEthernet0/0 Grp 1 state Active -> Init
*Mar  1 00:43:57.651: %LINK-5-CHANGED: Interface FastEthernet0/0, changed state to administratively down
*Mar  1 00:43:58.651: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to down


R1(config)#int l 0
R1(config-if)#sh
R1(config-if)#
*Mar  1 00:49:52.439: %LINK-5-CHANGED: Interface Loopback0, changed state to administratively down
*Mar  1 00:49:53.439: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to down
*Mar  1 00:51:05.359: %GLBP-6-FWDSTATECHANGE: FastEthernet0/0 Grp 1 Fwd 1 state Active -> Listen


R4(config)#

*Mar  1 00:41:32.807: %GLBP-6-STATECHANGE: FastEthernet0/0 Grp 1 state Standby -> Active
*Mar  1 00:42:09.879: %GLBP-6-FWDSTATECHANGE: FastEthernet0/0 Grp 1 Fwd 1 state Listen -> Active


R4(config)#do sh glbp br
Interface   Grp  Fwd Pri State    Address         Active router   Standby router
Fa0/0       1    -   104 Active   10.1.1.100      local           10.1.1.3
Fa0/0       1    1   -   Active   0007.b400.0101  local           -
Fa0/0       1    2   -   Listen   0007.b400.0102  10.1.1.2        -
Fa0/0       1    3   -   Listen   0007.b400.0103  10.1.1.3        -
Fa0/0       1    4   -   Active   0007.b400.0104  local           -


위와 같이 R5다음으로 우선순위가 높은 R4가 AVG가 되었고, R3가 Stanby AVG가 되었다. 또한 1번 AVF로 R4가 된 것을 확인할 수 있다. 4번 AVF도 Active 상태로 그대로 있다. 따라서 R4는 1번 AVF, 4번 AVF의 역할을 모두 수행하게 된다.


이 상황에서 R5의 F0/0을 살린다면 1번 AVF를 R4대신 R5가 수행할수 있을지 확인한다.


R5(config)#int f 0/0
R5(config-if)#no sh
R5(config-if)#
*Mar  1 00:54:09.043: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
*Mar  1 00:54:10.043: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
*Mar  1 00:54:10.463: %GLBP-6-STATECHANGE: FastEthernet0/0 Grp 1 state Speak -> Active
R5(config-if)#ex
R5(config)#do show glbp br
Interface   Grp  Fwd Pri State    Address         Active router   Standby router
Fa0/0       1    -   105 Active   10.1.1.100      local           10.1.1.4
Fa0/0       1    1   -   Listen   0007.b400.0101  10.1.1.4        -
Fa0/0       1    2   -   Listen   0007.b400.0102  10.1.1.2        -
Fa0/0       1    3   -   Listen   0007.b400.0103  10.1.1.3        -
Fa0/0       1    4   -   Listen   0007.b400.0104  10.1.1.4        -


R5의 F0/0을 활성화하니 R5가 다시 AVG가 되었고 R4가 Stanby AVG가 되었다. 하지만 1번 AVF는 여전히 R4가 맡고있다.


R1(config)#int l 0
R1(config-if)#no sh
R1(config-if)#ex
R1(config)#
*Mar  1 01:02:42.667: %LINK-3-UPDOWN: Interface Loopback0, changed state to up
*Mar  1 01:02:43.667: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up
*Mar  1 01:03:14.659: %GLBP-6-FWDSTATECHANGE: FastEthernet0/0 Grp 1 Fwd 1 state Listen -> Active

R1(config)#do sh glbp br
Interface   Grp  Fwd Pri State    Address         Active router   Standby router
Fa0/0       1    -   101 Listen   10.1.1.100      10.1.1.5        10.1.1.4
Fa0/0       1    1   -   Active   0007.b400.0101  local           -
Fa0/0       1    2   -   Listen   0007.b400.0102  10.1.1.2        -
Fa0/0       1    3   -   Listen   0007.b400.0103  10.1.1.3        -
Fa0/0       1    4   -   Listen   0007.b400.0104  10.1.1.4        -


R1의 루프백을 살리니 1번 AVF가 R1에게로 넘어갔다.


이번엔 AVF Preemption을 비활성화 한 뒤, R1의 루프백을 죽여보기로 한다.


R2(config)#int f 0/0
R2(config-if)#no glbp 1 forwarder preempt


R3(config)#int f 0/0
R3(config-if)#no glbp 1 forwarder preempt


R4(config)#int f 0/0
R4(config-if)#no glbp 1 forwarder preempt


R5(config)#int f 0/0
R5(config-if)#no glbp 1 forwarder preempt

R1(config)#int l 0
R1(config-if)#shutdown
R1(config-if)#
*Mar  1 01:10:15.787: %LINK-5-CHANGED: Interface Loopback0, changed state to administratively down
*Mar  1 01:10:16.787: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to down
R1(config-if)#
R1(config-if)#do show glbp
FastEthernet0/0 - Group 1
  State is Listen
    5 state changes, last state change 00:57:13
  Virtual IP address is 10.1.1.100
  Hello time 3 sec, hold time 10 sec
    Next hello sent in 1.592 secs
  Redirect time 600 sec, forwarder time-out 14400 sec
  Preemption enabled, min delay 0 sec
  Active is 10.1.1.5, priority 105 (expires in 8.156 sec)
  Standby is 10.1.1.4, priority 104 (expires in 9.636 sec)
  Priority 101 (configured)
  Weighting 80, low (configured 100), thresholds: lower 90, upper 95
    Track object 1 state Down decrement 20
  Load balancing: round-robin
  Group members:
    0000.0000.0001 (10.1.1.1) local
    0000.0000.0002 (10.1.1.2)
    0000.0000.0003 (10.1.1.3)
    0000.0000.0004 (10.1.1.4)
    0000.0000.0005 (10.1.1.5)
  There are 4 forwarders (1 active)
  Forwarder 1
    State is Active
      5 state changes, last state change 00:08:14
    MAC address is 0007.b400.0101 (default)
    Owner ID is 0000.0000.0001
    Preemption enabled, min delay 30 sec
    Active is local, weighting 80
  Forwarder 2
    State is Listen
    MAC address is 0007.b400.0102 (learnt)
    Owner ID is 0000.0000.0002
    Time to live: 14399.200 sec (maximum 14400 sec)
    Preemption enabled, min delay 30 sec
    Active is 10.1.1.2 (primary), weighting 100 (expires in 9.196 sec)
  Forwarder 3
    State is Listen
    MAC address is 0007.b400.0103 (learnt)
    Owner ID is 0000.0000.0003
    Time to live: 14399.192 sec (maximum 14400 sec)
    Preemption enabled, min delay 30 sec
    Active is 10.1.1.3 (primary), weighting 100 (expires in 9.188 sec)
  Forwarder 4
    State is Listen
    MAC address is 0007.b400.0104 (learnt)
    Owner ID is 0000.0000.0004
    Time to live: 14397.368 sec (maximum 14400 sec)
    Preemption enabled, min delay 30 sec
    Active is 10.1.1.4 (primary), weighting 100 (expires in 7.364 sec)


weight가 80으로 떨어졌음에도 불구하고 R1이 1번 AVF에서 박탈되지 않는다.


AVF별로 로드밸런싱이 되는것을 확인하려면


Rx(config-if)#glbp 1 client-cache maximum 30

Rx#show glbp detail

Posted by 비형랑#
: