VRRP란?
VRRP는 여러 라우터 또는 노드를 하나의 Virtual Router 그룹으로 묶고, 클라이언트에게는 하나의 가상 게이트웨이 IP만 보이게 하는 프로토콜
일반적으로 서버나 VM은 외부 네트워크로 나가기 위해 하나의 Default Gateway를 사용한다. 만약 갑자기 Gateway 역할을 하는 장비가 장애를 일으키면, 해당 네트워크에 있는 서버들은 외부와 통신할 수 없게 된다.
VRRP는 이런 문제를 해결하기 위해 여러 장비가 하나의 Virtual IP를 공유하게 한다. 서버 입장에서는 Gateway IP가 하나로 보이지만, 실제로는 여러 라우터 중 하나가 Master가 되어 해당 IP를 처리하고, 나머지는 Backup으로 대기한다.
동작 방식
VRRP에서는 여러 라우터 중 하나가 Master가 되고, 나머지는 Backup이 된다.
Master는 Virtual IP를 실제로 소유하고 트래픽을 처리한다. Backup은 Master 상태를 감시하면서 대기한다.
Priority의 값을 통해 Master을 선택하게 된다. 아래 이미지의 경우에 Priority가 높은 Router A가 실제 트래픽을 받게 된다.
VRID는 VRRP 그룹을 구분하는 식별자다.

Advertisement를 통한 상태 감시
VRRP Master는 주기적으로 Advertisement 패킷을 보낸다.
만약 Master가 장애가 발생하여 Advertisement을 보내지 못한다면 Backup이 새로운 Master로 승격된다.
VRRP Advertisement는 TCP/UDP가 아니라 IP Protocol 112를 사용한다. 따라서 방화벽이나 ACL에서 해당 프로토콜이 차단되면 Backup이 Master 상태를 정상적으로 감시하지 못할 수 있다.
Router A Master
Router B Backup
Router A -> VRRP Advertisement
Router B -> Advertisement 수신 후 Backup 유지
Gratuitous ARP
Backup이 새로운 Master가 되었다고 해서 네트워크가 자동으로 바로 Router B 쪽으로 트래픽을 보내는 것은 아니다.
Host나 스위치 같은 주변 장비들은 기존에 학습한 ARP 정보와 MAC Table 정보를 가지고 있을 수 있다. 그래서 새로운 Master는 자신이 Virtual IP를 처리한다는 사실을 네트워크에 알려야 한다.
이때 사용되는 것이 Gratuitous ARP다.
Router B -> Network:
192.168.10.1 is-at 00:00:5E:00:01:0A
VRID = 10
Virtual MAC = 00:00:5E:00:01:0A
Failover 전:
Virtual MAC -> Router A가 연결된 스위치 포트
Failover 후:
Virtual MAC -> Router B가 연결된 스위치 포트
새로운 Master인 Router B는 Gratuitous ARP를 통해 갱신이 완료된 것을 알릴 수 있다.
이를 통해 Host의 ARP Table과 스위치의 MAC Table이 갱신되고, 이후 트래픽은 Router B 방향으로 전달된다.
L2? L3?
VRRP는 프로토콜 관점에서는 L3 프로토콜이다.
VRRP Advertisement는 TCP나 UDP가 아니라 IP Protocol 112를 사용해 전달된다.
하지만 실제 동작은 L2와도 밀접하게 관련되어 있다. 서버는 Default Gateway인 Virtual IP로 패킷을 보내기 위해 먼저 ARP를 통해 MAC 주소를 알아낸다.
Host -> Network:
Who has 192.168.10.1?
Master -> Host:
192.168.10.1 is-at 00:00:5E:00:01:0A