[ACSA 교육#34] VRRP

이전 포스팅에서 기본 게이트웨이(Default Gateway)에 대해 알아봤었습니다. 엔드 포인트는 하나의 기본 게이트웨이만 가질 수 있습니다. 그리고 그것은 단일 장애 포인트가 될 수 있습니다.
아래 그림을 살펴보면, Core-1에 장애가 발생할 경우, PC-1을 비롯한 Core-1을 기본 게이트웨이로 사용하는 모든 호스트들이 격리됩니다.

이럴 때 어떻게 대처해야 할까요?

이중화를 위해서 다른 기본 게이트웨이를 추가할 수도 있습니다. 이것은 쉬운 해결책으로 보일 수도 있지만, 실상은 그렇지 않을 수도 있습니다.
각 엔드 포인트의 기본 게이트웨이 정보는 수동으로 직접 구성하거나 DHCP를 통해 얻게 됩니다.
Core-1에 장애가 발생하면, 새로운 기본 게이트웨이 정보를 수동으로 업데이트하거나 DHCP 범위를 재구성한 다음에 모든 엔드 유저에게 네트워크 연결을 끊고 다시 접속하여 새로운 정보를 DHCP로부터 받도록 해야 합니다.

C:\> ipconfig /release
C:\> ipconfig /renew

위의 방법은 그닥 효율적으로 보이지도 않고 확장성이나 편의성 면에서 떨어져 보입니다.
그럼 다른 대안은 무엇이 있을까요?

FHRP (First Hop Redundancy Protocol)

이러한 문제에 대한 실질적인 솔루션은 일종의 FHRP(First Hop Redundancy Protocol)을 사용하여 엔드포인트 단이 아니라 네트워크 단에서 문제를 해결할 수 있습니다.

이것은 조정된(Coordinated) 게이트웨이 솔루션을 사용하여 엔드포인트에 대한 복원력을 추가합니다.
엔드포인트의 IP구성에 대한 변경과 DHCP 수정이 없고, 엔드 유저의 끊김도 없습니다. – 완전한 자동화로!!

“복원력(Resiliency)”란 네트워크에서 변경이나 장애 발생시 대처하는 능력을 나타내는 용어입니다.

FHRP 솔루션은 두 개 이상의 물리적 라우터에서 단일 조정 게이트웨이(Single Coordinated Gateway)를 생성합니다.
두 개 이상의 이 물리적 라우터들은 하나의 VIP(Virtual IP, 가상 IP)주소를 갖는 가상의 장치로 엔드포인트에게 자신을 표시합니다. 그리고 이 VIP가 엔드포인트의 기본 게이트웨이 주소가 됩니다.

일반적으로, 주 라우팅 장치(Primary Routing Device)가 기본 게이트웨이 역할을 수행하여 엔드포인트에 대한 트래픽을 전달합니다. 보조 장치(Secondary Device)는 주 장치(Primary Device) 상태를 모니터링하게 됩니다.

만약, 주 장치에서 장애가 발생하게 되면, 보조 장치가 이를 대신하게 됩니다. 주 역할(Primary Role)과 VIP주소를 보조 장치가 맡고 엔드포인트의 트래픽을 전달합니다.

엔드포인트의 관점에서 보면, 가상 IP주소는 계속 사용할 수 있습니다. 기본 게이트웨이의 주소가 변경되지 않기 때문에 엔드 유저의 네트워크가 끊기지 않게 됩니다.

VRRP (Virtual Router Redundancy Protocol)

RFC 5798에서는 두 개 이상의 라우팅 장치가 엔드포인트에 게이트웨이 이중화를 제공할 수 있도록 하는 표준 FHRP인 VRRP(Virtual Router Redundancy Protocol)을 정의하고 있습니다.

VRRP 아키텍처

VRRP는 Master-Standby 아키텍처를 사용합니다. 하나의 게이트웨이만 VIP주소로 전송된 트래픽을 전달합니다. 이 기본 전달 장치(Primary Forwarding Device)를 Master라고 하고, 비 전달 장치는 백업이 됩니다.

VRRP 인스턴스

ArubaOS-CX는 VRRP의 여러 인스턴스를 배포할 수 있습니다. 또한 아래 그림과 같이 VLAN에 대한 부하 분산(Load Balancing)을 조정할 수도 있습니다.

ArubOS-CX VRRP 인스턴스 구조

각 인스턴스에는 고유한 VRID(Virtual Router ID) 번호가 있으며, AOS-CX는 위 그림과 같이 그룹 ID를 나타냅니다. VRRP 인스턴스 1은 VLAN 10을 제공하고, VRRP 인스턴스 2는 VLAN 20을 제공합니다.

스위치 Core-1은 VLAN 10의 마스터 및 액티브 전달자이고, Core-2는 스탠바이(대기) 상태입니다.
반면에, Core-2는 VLAN 20의 마스터이고, Core-1은 대기입니다.

이렇게 라우팅에 대한 로드 밸런싱 기능을 제공할 수 있습니다.

VRRP 인스턴스 용량

이 인스턴스는 VRRP에서 VRID(Virtual Router ID)라고도 하며, 스위치 용량에 따라 지원 가능한 VRID의 수가 다릅니다. ArubaOS-CX에서는 “show capacities vrrp”라는 명령어를 사용하여 스위치의 용량을 확인할 수 있습니다.

Switch# show capacities vrrp
System Capacities: Filter VRRP                                                     Value
-----------------------------------------------------------------------------------------
Maximum number of unique IPv4 VRRP VRIDs configurable between 1 to 255                 8
Maximum number of VRRP IPv4 addresses supported                                     1024
Maximum number of VRRP IPv4 addresses supported per virtual router                    16
Maximum number of VRRP IPv4 virtual routers supported per port                         8
Maximum number of VRRP virtual routers supported                                     256
<<<<Omitted output>>>>
VRRP 마스터 선정

VRRP 구성원은 마스터 게이트웨이 선택을 위해서 224.0.0.18의 IP주소와 112번 프로토콜을 사용하여 멀티캐스트 광고 메시지를 교환합니다.

마스터 선택을 지정하기 위해서는, 1부터 255까지의 우선 순위 값을 설정하면 됩니다. 가장 높은 우선 순위(숫자가 클수록 우선 순위가 높음)가 마스터로 선택됩니다. 만약 우선 순위가 동일할 경우에는 가장 높은 IP주소를 가진 게이트웨이가 선택됩니다.

ArubaOS-CX에서 우선 순위의 기본값은 100으로 설정됩니다.

VIP주소 (Virtual IP, 가상 IP주소)

VIP, 즉 가상 IP주소는 게이트웨이 조정(Coordination)의 결과입니다. 일반적으로 각 개별 물리적 게이트웨이에는 고유한 실제 IP(Real IP)주소가 할당되어 있습니다. 그리고 VIP주소 역시도 고유한 주소를 가져야만 합니다.

아래 그림을 살펴보면, 마스터 게이트웨이 10.0.10.1이라는 실제 IP주소를 할당하고, 백업 게이트웨이에는 10.0.10.2를 할당했습니다. 그리고 VIP주소로 10.0.10.3을 사용합니다.

각 VRRP 인스턴스에는 고유한 VRRP 주소가 있습니다. 위 그림의 10.0.10.3은 VLAN 10에 사용되는 인스턴스 10의 VIP 주소일 수도 있습니다. 그리고 VLAN 20에 사용되는 인스턴스 20의 VIP 주소는 10.0.20.3을 사용할 수도 있을 것입니다.

이 VIP주소가 엔드포인트의 기본 게이트웨이로 구성되었는지 확인 해보겠습니다.
먼저, 엔드포인트는 트래픽을 VIP주소로 전달합니다. VRRP 마스터는 이러한 패킷을 수신하고 라우팅합니다. |마스터 장치에 장애가 발생하면, 백업 장치가 대신합니다. 엔드포인트 기기는 라우터의 물리적 IP주소(예: 10.0.10.1, 10.0.10.2)에 대해 학습하지는 않습니다.

vMAC(가상 MAC주소)가 VIP에 자동으로 할당됩니다. 표준에 따라 위 그림에서 MAC주소는 00:00:5e:00:00:xx 입니다. 여기서 xxVRID를 나타내게 되고, 그림에서는 0A로 가상 MAC주소가 만들어지게 됩니다.

※ 16진수에서 0A는 10진수에서 10을 나타냅니다.

따라서, 기본 게이트웨이 주소 10.0.10.3에 대한 vMAC주소 00:00:5e:00:00:0a에 대해서 엔드포인트는 학습하여 ARP 테이블에 추가합니다.

VRRP Failover 동작방식

아래 그림은 두 개의 Core 스위치가 VRRP를 실행하는 시나리오를 나타냅니다.

Core-1이 더 높은 우선 순위를 가지게 되어 VRRP Master 역할을 수행합니다. Core-2는 VRRP Standby로, Keep-alive 메커니즘을 통해 Core-1의 상태를 지속적으로 모니터링합니다.
엔드포인트는 VRRP 마스터가 서비스하고 있는 10.0.10.3 VIP주소로 트래픽을 전달합니다.

만약 여기서, Core-1에 장애가 발생하면 어떻게 될까요?
Standby 장비는 Keep-alive 메시지 수신이 중단되기 때문에 Master 서버에 장애가 발생하여 다운되었다는 것을 알게 됩니다. 그러고 나서 Standby 장비가 새로운 Master로 사용되어 VIP 10.0.10.3의 주소로 들어오는 트래픽을 전달하기 시작합니다.

VRRP 선점 (Preemption)

위 내용에서 이어서 살펴보면, Core-1에 장애가 발생하여 Core-2가 새로운 Master로 인계 되었음을 알 수 있습니다. 그럼 장애 조치가 완료되어서 Core-1이 다시 온라인 상태가 되면 어떻게 될까요?

이 때는 VRRP 선점(Preemption)을 구성하는 방법에 따라 다르게 됩니다.


선점이 활성화되어 있는 경우라면 Core-1은 원래 Master 역할을 재개하고, Core-2는 Standby 역할로 돌아갑니다. – 이것은 ArubaOS-CX의 기본 설정입니다.

모든 장치가 온라인인 상태로 정상적으로 동작한다는 조건하에, 항상 같은 라우터 장비가 Master가 된다는 것을 알 수 있기 때문에 관리적으로 좋습니다. 이것은 여러 개의 VRRP 인스턴스를 사용하는 경우에 특히나 중요할 수 있습니다. 만약 하나의 Master가 장애가 난다면, 나머지 장치(들)이 모든 엔드포인트의 트래픽 부하를 부담해야 합니다.

선점이 비활성화되어 있는 경우라면, Core-1은 원래 Master 역할로 돌아오지 않습니다. Core-2가 마스터 역할을 그대로 유지하고, Core-1은 Standby 역할을 맡게 됩니다.
여기서 선점을 비활성화하기 위해서는 “no prempt”라는 명령어를 수동으로 입력해야만 합니다.

선점을 비활성화하게 되면, 위의 이점들을 이용할 수 없게 됩니다. 하지만, 몇몇 관리자들은 라우터(게이트웨이)가 원래의 역할로 되돌아오는 선점 과정(Preemption Process)에서 발생할 수 있는 간헐적 끊김에 대해 우려하고 선점 기능을 비활성화하기도 합니다.
하지만, ArubaOS-CX 장치들은 고성능 기반으로 설계되었기 때문에 이런 걱정을 염려 안 해도 됩니다.

VRRP와 MSTP 조정

예전 포스팅에서 우리는 루프(Loop)에 대해 알아본 적이 있습니다. 그리고 이를 방지하기 위한 스패닝트리(Spanning Tree)도 함께 배웠습니다. 이러한 시나리오에서 MSTP의 루트 브릿지와 VRRP 마스터간에 조정이 필요합니다. 그래야 적절한 트래픽 전달이 보장되기 때문이죠.

예를 들어 위 그림을 한 번 살펴보겠습니다.

Core-1 스위치는 VLAN 1부터 VLAN 20까지 지원하는 MSTP 인스턴스 1의 루트 브릿지(Root Bridge)로 구성됩니다. 또한, Core-1 스위치는 동일한 VLAN 범위(VLAN 1-20)에 대한 VRRP 마스터로 구성됩니다.
Core-1에서 문제가 발생하면, Core-2는 새로운 VRRP 마스터가 되고 인스턴스 1에 대한 새로운 루트 브릿지가 됩니다.


이렇게 오늘은 VRRP에 대해서 알아봤습니다.
Layer 3 기능 중에서 VRRP는 이중화 구성 환경 중에 중요한 기능 중 하나입니다.

구성 예제

그럼 ArubaOS-CX 스위치에서 실제로 구성하는 예제를 살펴보겠습니다.

위와 같은 시나리오로 구성해보겠습니다.

1. Core-2 스위치의 VLAN 인터페이스에서 VRRP를 구성합니다.
Core-2(config)# interface vlan 11
Core-2(config-if-vlan)# vrrp 11 address-family ipv4
Core-2(config-if-vrrp)# address 10.0.11.254 primary
Core-2(config-if-vrrp)# no shutdown
2. VRRP 정보 확인합니다.
Core-2# show vrrp interface vlan11
VRRP is enabled
Interface vlan1111 - Group 11 - Address-Family IPv4
  State is MASTER
  State duration 01 mins 17.300 secs
  Virtual IP address is 10.11.11.254
  Virtual MAC address is 00:00:5E:00:01:0B
  Advertisement interval is 1000 msec
  Version is 2
  Preemption is enabled
   min delay is 0 sec
  Priority is 100
  Master Router is 10.11.11.2 (local)
  Master Advertisement interval is 1000 msec
  Master Down interval is 3609 msec
Core-2(config)#
3. Core-1 스위치에도 구성합니다.
Core-1(config)# interface vlan 11
Core-1(config-if-vlan)# vrrp 11 address-family ipv4
Core-1(config-if-vrrp)# address 10.0.11.254 primary
Core-1(config-if-vrrp)# no shutdown
4. Core-1 스위치를 Master로 설정하기 위해 우선 순위를 254로 설정합니다.
Core-1(config-if-vrrp)# priority 254
5. Core-1의 VRRP 구성을 확인합니다. (Core-2의 vMAC주소와 동일한 MAC주소)
Core-1(config)# show vrrp interface vlan11
VRRP is enabled
Interface vlan11 - Group 11 - Address-Family IPv4
  State is MASTER
  State duration 12.501 secs
  Virtual IP address is 10.11.11.254
  Virtual MAC address is 00:00:5E:00:01:0B
  Advertisement interval is 1000 msec
  Version is 2
  Preemption is enabled
   min delay is 0 sec
  Priority is 254
  Master Router is 10.11.11.1 (local)
  Master Advertisement interval is 1000 msec
  Master Down interval is 3007 msec

6. 같은 방법으로 VLAN 12의 VRRP도 구성합니다.

Core-1(config)# interface vlan 12
Core-1(config-if-vlan)# vrrp 12 address-family ipv4
Core-1(config-if-vrrp)# address 10.0.12.254 primary
Core-1(config-if-vrrp)# no shutdown
Core-2(config)# interface vlan 12
Core-2(config-if-vlan)# vrrp 12 address-family ipv4
Core-2(config-if-vrrp)# address 10.0.12.254 primary
Core-2(config-if-vrrp)# no shutdown

7. 두 개의 VLAN에 대한 VRRP 정보를 확인합니다.

Core-2# show vrrp brief
vlan11        11 IPv4 100 3647       N     Y   BACKUP   10.11.11.1 10.11.11.254
vlan12        12 IPv4 100 34         N     Y   BACKUP   10.11.12.1 10.11.12.254

이렇게 VRRP 구성하는 예제까지 살펴보았습니다.
실제 Lab을 구성해서 Failover 테스트까지 진행해보면서 ARP 테이블의 MAC주소는 어떻게 가져오는지, 게이트웨이 통신은 문제 없는지를 살펴보면 더욱 유익한 실습이 될 것입니다.