Networking
[NSX] how ARP works between non-overlay and overlay
haewon83
2024. 6. 9. 16:52
ARP는 Ethernet Networking에서 통신을 위해 가장 중요한 요소 중 하나 입니다.
ARP가 동작하는 방식은 일반적인 상황에서 많이 알려져 있기 때문에 많은 분들이 Request/Reply가 동작하는 방식에 대해서 익숙할 것으로 생각합니다.
이 ARP가 NSX가 제공하는 Overlay 환경에서는 Broadcast와 같은 BUM Traffic을 줄여 Network을 효과적으로 사용할 수 있도록 하기 위해 다소 차이가 있습니다.
이에 일반적인 환경과 비교하여 Overlay 환경에서는 ARP가 어떻게 동작하는지 살펴보겠습니다.
VM1 정보 : IP1 / MAC1 / ESXi Host1
VM2 정보 : IP2 / MAC2 / ESXi Host2
Non-overlay IP networking
- VM1이 IP2에 대한 MAC 주소 획득을 위해 Broadcast 전달
- Source MAC 주소는 MAC1
- Destination MAC 주소는 FF:FF:FF:FF:FF:FF
- Source IP 주소는 IP1
- Payload는 IP2의 MAC을 위한 Request
- 만약 이 시점에 아직 Switch가 MAC1을 Learning 하지 않았다면, Switch의 L2 Forwarding Table에 MAC1 추가
- L2 Network은 같은 Network 내에 다른 Port에 VM1로부터 전달된 Broadcast를 복사
- IP2를 가진 VM2는 Broadcast로 전달된 ARP Request를 수신하고, unicast ARP message를 이용하여 VM1에게 ARP Reply 전달
- Source MAC 주소는 MAC2
- Destination MAC 주소는 MAC1
- Source IP 주소는 IP2
- Destination IP 주소는 IP1
- VM2는 IP1에 대한 Entry를 이용하여 ARP Table Update
- 만약 이 시점에 앚기 Switch가 MAC2를 Learning 하지 않았다면, Switch의 L2 Forwarding Table에 MAC2 추가
- VM1이 VM2로부터 ARP Reply 수신
- VM1은 IP2에 대한 Entry를 이용하여 ARP Table Update
- VM1이 VM2에 ICMP Request 전달
- Source MAC 주소는 MAC1
- Destination MAC 주소는 MAC2
- Source IP 주소는 IP1
- Destination IP 주소는 IP2
- Payload는 ICMP Request
- VM2가 VM1으로부터 ICMP Request 수신하고 VM1에게 ICMP Reply 전달
- Source MAC 주소는 MAC2
- Destination MAC 주소는 MAC1
- Source IP 주소는 IP2
- Destination IP 주소는 IP1
- Payload는 ICMP Reply
Overlay IP networking
- VM1이 Power-on이 되면, VM1이 기동 중인 Transport Node인 ESXi Host1에 있는 L2 Forwarding Engine이 VM1의 MAC 주소를 확인
- L2 MAC Forwarding Table을 업데이트
- 업데이트 내용을 NSX Manager에게 전달하여, CCP의 L2 MAC Forwarding Table 업데이트
- 각 Segment별로 LCP와 CCP의 ARP Table 업데이트 → LCP는 Local ARP Table, CCP는 CCP ARP Table
- Transport Node의 L2 Engine은 ARP Suppression 기능이 있어, Forwarding Engine이 VM1에서 전달된 ARP Request를 확인하면,
- VM2의 IP2가 있는지 LCP(Local ARP Table)를 확인
- 없으면, CCP에 IP2가 있는지 확인 요청
- LCP 또는 CCP에서 IP2가 확인되면, ARP Suppression 기능은 IP2 대신에 VM1에 ARP Response를 전송 → Broadcast ARP Request가 ESXi Host1 밖으로 나갈 필요가 없어짐
- 만약, IP2가 확인되지 않으면, ESXi Host1은 Broadcast ARP Request를 복제하여 내보냄
- NSX Overlay Segment는 Default로 MTEP 사용(Hierarchical Two-Tier Replication)
- ESXi Host1은 ESXi Host1이 가지고 있는 TEP과 같은 Subnet에 있는 Remote TEP을 가진 Segment Active Logical Span 내의 모든 TEP에 Broadcast ARP Request를 복제
- 그리고, 다른 Subnet에 위치한 Host의 TEP Table에 MTEP으로 표시된 모든 TEP에 Broadcast ARP Request를 복제 → 각 Remote TEP Subnet 별로 전체 TEP 중 하나의 TEP이 선택
- 선택된 TEP을 가진 ESXi Host가 Broadcast ARP Request Packet을 받으면, TEP의 같은 Subnet 내에 위치한 Segment Active Logical Span 내의 모든 TEP에 Broadcast ARP Request를 복제
- 만약 Segment가 Hierarchical Two-Tier Repliation이 아닌 Head End Replication 방식으로 설정되어 있다면, 단순하게 Source ESXi Host가 전체 TEP에 Packet을 복제
- 다시 ARP Suppression으로 돌아가면, ARP Suppression 기능이 VM2 대신에 VM1에게 응답을 줬기 때문에, VM2는 VM1으로 부터 Request를 수신하지 못한 상태
- VM1은 VM2의 IP를 알기 때문에 ICMP를 Unicast Request로 보낼 수 있지만, VM2의 경우에는 VM1의 IP1에 대한 ARP Entry가 없기 때문에 ICMP Request에 대해 바로 응답할 수 없는 상황
- 이렇기 떄문에, VM2는 IP1의 MAC 주소를 확인하기 위해서 ARP Request 전송
- 이 때 CCP는 이미 IP1의 ARP Entry를 학습하고 이를 모든 Transport Node에 Publish 한 상황
- 따라서, ESXi Host2의 ARP Suppression 기능은 VM2의 ARP Request에 대신 응답 → Broadcast ARP Request가 ESXi Host2 밖으로 나갈 필요가 없어짐
- 이제 CCP가 VM1과 VM2에 대한 Forwarding Entry를 모두 학습하고 Publish
## NSX Manager nsx-mgr01> get logical-switch 3d482f26-343b-4a98-97bf-9de6e051d646 arp-table Sat Jun 08 2024 UTC 13:04:49.076 VNI IP MAC TransportNode-ID 71680 172.31.1.30 00:50:56:a6:c6:4b efd788b6-2631-4517-bad0-c020bd0f4594 71680 172.31.2.2 00:50:56:a6:06:cf acade7f2-2374-49d5-8807-a159168caf33 71680 172.31.1.50 00:50:56:a6:93:8d efd788b6-2631-4517-bad0-c020bd0f4594 71680 172.31.1.61 00:50:56:a6:ce:a5 efd788b6-2631-4517-bad0-c020bd0f4594 ## Transport Node [root@esxi-comp-01:~] nsxcli -c get logical-switch 3d482f26-343b-4a98-97bf-9de6e051d646 arp-table Sat Jun 08 2024 UTC 13:04:47.546 Logical Switch ARP Table -------------------------------------------------- Host Kernel Entry ================================================== IP MAC Flags LCP Entry ================================================== IP MAC 172.31.1.30 00:50:56:a6:c6:4b 172.31.2.2 00:50:56:a6:06:cf 172.31.1.50 00:50:56:a6:93:8d 172.31.1.61 00:50:56:a6:ce:a5 |