본문 바로가기
Infra & DevOps/Network

[퍼온 글] GARP의 정의와 활용 사례

by Jordy-torvalds 2020. 6. 3.
반응형

출처 : https://www.netmanias.com/ko/post/blog/5402/arp-ethernet-ip-ip-routing-network-protocol/arp-and-garp-gratuitous-arp
GARP의 사용 목적은 여러가지가 있겠지만 가장 대표적인 3가지 정도를 말씀드리겠습니다. 

 

ARP와 GARP(Gratuitous ARP)

IPoE(IP over Ethernet) 환경에서(현재 우리 모두가 사용하고 있는 환경이죠... L3 = IP, L2 = Ethernet) 상대방 호스트(PC/서버) 혹은 라우터의 MAC 주소를 알기 위해, 해당 노드(호스트/라우터)의 IP 주소를 타��

www.netmanias.com

 

1) IP 주소 충돌 감지

"IP 주소 충돌"을 감지하기 위해 사용합니다. 호스트에서 자신의 IP 주소를 타겟으로 하여 ARP 요청을 보내고, 만약 다른 호스트에서 이에 대한 응답이 있다면 이미 해당 IP 주소를 사용하고 있는 호스트가 존재하고 있음을 알 수 있습니다. 이 경우 Windows는 "IP 주소가 충돌납니다~*"라고 화면에 띄어 주게 됩니다. (아래 그림)

 

 

여기서 잠깐! GARP와 약간의 차이가 있기는 하지만 Windows의 DHCP client도 IP 주소를 할당 받은 후 "IP 주소 충돌" 감지를 위해 ARP를 보냅니다. 이에 대해서 좀 더 상세하게 알고 싶으시면 

  넷매니아즈 기술문서, "DHCP 상세 동작 원리", 1~2 page 참조

 

2) ARP Table 갱신

나와 동일 서브넷 상에 존재하는 호스트/라우터의 ARP table(ARP cache라고도 부르는)을 갱신(refresh)하기 위해 사용됩니다. 즉, 누군가가 GARP 패킷을 보내면, 이를 수신한 모든 호스트/라우터는 GARP 패킷의 {Sender MAC address와 Sender IP address} 필드로 자신의 ARP table을 갱신하게 됩니다. (아래 그림)

 

 

3) VRRP/HSRP

VRRP/HSRP 프로토콜에서 사용됩니다. VRRP/HSRP가 enable된 라우터 중 Master에 해당하는 라우터는 자신과 연결된 L2 switch의 MAC address table 정보를 갱신(해당 MAC 주소에 대한 Port 정보 갱신)하기 위해 GARP를 사용합니다.

 

이에 대해서 좀 더 상세하게 알고 싶으시면 

 넷매니아즈 기술문서, "VRRP 상세 동작 원리", 5 page 참조

 

출처: 오리뎅이님 게시글(https://blog.naver.com/PostView.nhn?blogId=goduck2&logNo=220162690234&parentCategoryNo=&categoryNo=73&viewDate=&isShowPopularPosts=false&from=menu)

 

MAC Table update

GARP를 이용해서 MAC Table을 업데이트 하는 것은 라우터 이중화 프로토콜인 VRRP(Virtual Router Redundancy Protocol) 및 HSRP(Hot Standby Redundancy Protocol)에 사용하는 방식이기 때문에 VRRP의 예를 들어서 간단히 설명하겠습니다. VRRP를 배우고자 하는 시간이 아닌만큼 VRRP에 대해서는 자세히 설명하지 않겠습니다.

 

그림 6. VRRP 설명하려고 구글에서 발췌한 그림

출처 : http://humairahmed.com/blog/?p=2058

 

그림 6은 일반적인 VRRP 구성도입니다. 라우터 두대가 스위치의 gi 0/1 및 gi 0/0에 각각 연결되어 있습니다. VRRP에서는 실제 각 라우터의 Interface에 설정되는 Physical IP address와 MAC address와 별개로 Virtual IP Virtual MAC address를 사용합니다. 그림에서 Virtual IP는 11.0.0.100 이고 Virtual MAC은 02:02:02_02:02:02 입니다. 하단에 스위치에 연결되는 Host 장비들은 Default Gateway로 이 Virtual IP를 설정합니다. 초기 VRRP 설정에 의해서 왼쪽에 있는 E1200 장비가 Active Router 였다가 E1200에 장애가 발생하여, 오른쪽의 S55로 Active가 절체가 되는 경우를 가정하겠습니다. 

 

- E1200이 Active인 상황에서 한단 Host 장비들이 Gateway IP 11.0.0.100으로 ARP Request를 보내면, Switch S60은 수신 포트를

  제외한 다른 모든 port로 broadcast 합니다.

- E1200이 이 ARP Request packet에 대해 Virtual MAC address를 이용하여 ARP Reply를 보냅니다.

- ARP Reply Frame을 수신한 Switch S60은 Virtual MAC address 02:02:02_02:02:02가 port gi 0/1에서 들어 온것을 알고 MAC

  Table Entry를 만듭니다.

- ARP Reply를 수신한 Host들은 ARP Table에 Virtual IP addres와 Virtual MAC address를 mapping 하여 등록합니다.

- E1200이 장애가 발생하여, S55가 Active가 되면 가장 먼저 잽싸게(?) Virtual IP와 Virtual MAC을 이용하여 GARP를 보냅니다.

- GARP Frame을 수신한 Switch S60은 Virtual MAC address 02:02:02_02:02:02가 port gi 0/0 에서 들어 온것을 알고 기존 MAC

  Table Entry를 업데이트 하여 port 정보를 gi 0/0으로 바꾸어 줍니다.

- Host 들은 Virtual IP와 MAC이 바뀌는 것은 아니므로 아무런 변화가 없습니다.

반응형

'Infra & DevOps > Network' 카테고리의 다른 글

TCP/IP  (3) 2021.10.06
게이트웨이 삽질  (0) 2020.06.14
[퍼온 글] DNS가 특정 포트를 가리킬 수 있는가?  (0) 2020.06.09
Private IP Range  (0) 2020.06.09