IP 라우팅 과정에 대해 알아보자
저번 포스팅에 이어서 이번에는 L3 스위치에서의 IP 라우팅 과정에 대해 알아보겠습니다.
넷매니아즈라는 사이트에 총 4편의 시리즈로 연재된 L3 스위치의 패킷 전달에 대한 아주 양질의 게시물을 참고하여 정리해보았으며, 실제 연재글에서는 상세한 그림과 함께 L3 스위치 내부 구조를 좀 더 세분화하여 설명하고 있으니 관심이 있으신분들은 여기를 참조해주시기 바랍니다.
목차
- 1. 서버1에서 서버4로 패킷 전달 - ARP Request Flooding
- 2. 서버1에서 서버4로 패킷 전달 - ARP Reply 수신
- 3. 서버1에서 서버4로 패킷 전달 - IP 라우팅
- 4. L3 스위치 동작의 핵심 정리
서버1과 서버4는 서로 다른 VLAN(서버1은 VLAN ID: 10, 서버4는 VLAN ID: 20)에 존재하며, 서버1의 ARP 테이블에는 L3 스위치(여기서는 Gateway)의 엔트리가 이미 존재한다고 가정하겠습니다.
서버1에서 서버4로 패킷 전달 - ARP Request Flooding
- 서버1에서 서버4로 패킷을 보내려고 합니다.
- 서버1의 라우팅 테이블을 참조(Destination 주소 별 게이트웨이 IP와 출력 포트를 확인할 수 있음)하여 서버4의 IP주소는 디폴트 라우트에 매칭된다는 사실과 Gateway IP주소(여기서는 L3 스위치의 주소임) 및 출력 포트를 확인할 수 있습니다.
- 서버1은 ARP 테이블을 참조하여 Gateway IP주소에 대한 MAC 주소를 확인합니다.
- 출력 포트와 MAC 주소를 확인했으니 서버1은 서버4로 패킷을 송신합니다.
- 해당 패킷은 출력 포트를 통해 L3 스위치로 이동합니다.
- 패킷을 수신한 L3 스위치는 해당 패킷을 버퍼(Ingress Packet Buffer)에 잠시 저장해둡니다.
- 이제 L3 스위치에서 수신한 패킷의 Source MAC 주소를 학습할 차례입니다. 동일 VLAN을 소유한 Line Card들에만 Source MAC 주소 정보를 공유하여 각각의 MAC 테이블에 그 값(VLAN, Source MAC 주소, 포트)을 저장하도록 합니다.
- 다음으로 해당 패킷을 IP 라우팅시킬지 Ethernet 스위칭시킬것인지를 결정하는데 이를 위해 Destination MAC 주소를 참조합니다.
Destination MAC 주소가 L3 스위치의 MAC 주소인 경우에는, IP 라우팅
Destination MAC 주소가 L3 스위치의 MAC 주소가 아닌 경우에는, Ethernet 스위칭 - 이 경우에는 해당 패킷의 Destination MAC 주소가 Gateway 즉, L3 스위치의 MAC 주소이므로 IP 라우팅을 시킵니다.
- IP 라우팅을 위해 L3 스위치는 Destination IP 주소에 대한 FIB lookup(LPM: Longest Prefix Match)을 수행하여 해당 패킷이 L3 스위치와 바로 연결되어 있는 목적지인 서버4로 가고자한다는 것을 확인합니다.
- 다음으로 L3 스위치는 ARP 테이블을 확인하여 Destination IP 주소에 대한 MAC 주소가 존재하는지 확인합니다.
- 만약 존재하지 않는다(ARP Miss!)면 동일한 VLAN에 속한 Line Card들에게 ARP Request 패킷을 Flooding합니다.
서버1에서 서버4로 패킷 전달 - ARP Reply 수신
- ARP Request 패킷을 수신한 서버4, 서버5, 서버6중에 해당 IP 주소를 소유한 서버4가 이에 대한 응답으로 ARP Reply를 L3 스위치로 전달합니다.
- ARP Reply 패킷을 수신한 L3 스위치는 해당 패킷을 버퍼(Ingress Packet Buffer)에 잠시 저장해둡니다.
- 이제 L3 스위치에서 수신한 패킷의 Source MAC 주소를 학습할 차례입니다. 동일 VLAN을 소유한 Line Card들에만 Source MAC 주소 정보를 공유하여 각각의 MAC 테이블에 그 값(VLAN, Source MAC 주소, 포트)을 저장하도록 합니다.
- 다음으로 해당 패킷을 IP 라우팅시킬지 Ethernet 스위칭시킬것인지를 결정하는데 이를 위해 Destination MAC 주소를 참조합니다.
- 이 경우에는 해당 패킷의 Destination MAC 주소가 L3 스위치의 MAC 주소이므로 IP 라우팅을 시킵니다.
- 여기서 만약 해당 패킷의 타입(Ethernet Header에 있는 EtherType)이 ARP 패킷(EtherType = 0x0806)인 경우에는 라우팅 시키지 않고 무조건 Control Module(L3 스위치 내에 존재하는 특정 모듈)이라는 곳으로 올려줍니다.
- ARP Reply 패킷을 수신한 Control Module은 ARP 테이블에 서버4의 IP 주소에 대한 MAC주소를 저장합니다.
- 여기까지 완료하면 이제 L3 스위치는 서버1에서 받은 패킷을 서버4로 송신할 수 있습니다.
서버1에서 서버4로 패킷 전달 - IP 라우팅
- 서버1이 목적지 주소가 서버4인 패킷을 L3 스위치로 보냅니다.
- 패킷을 수신한 L3 스위치는 해당 패킷을 버퍼(Ingress Packet Buffer)에 잠시 저장해둡니다.
- Source MAC 주소를 학습해볼까 했지만 해당 패킷의 Source MAC 주소는 이미 학습된 서버1의 정보입니다. 그러니 건너뜁니다.
- 이제 수신 패킷의 Destination IP 주소로 FIB lookup을해서 OIF(Outgoing Interface)를 확인(여기서는 서버4가 속한 VLAN ID를 확인할 수 있음)합니다.
- 그리고 ARP 테이블을 참조하여 Destination IP에 대한 MAC 주소를 확인합니다.
- 마지막으로 5번에서 찾은 MAC 주소를 통해 MAC 테이블에서 출력 포트를 확인합니다.
- L3 스위치는 앞서 버퍼에 잠시 저장해둔 패킷(2번 과정을 참고)을 출력을 위한 버퍼(Egress Packet Buffer)로 옮긴 후 6번에서 확인된 MAC주소로 해당 패킷을 송신합니다.
- 서버1이 송신한 패킷은 최종적으로 서버4에 도달하게됩니다.
L3 스위치 동작의 핵심 정리
- L3 스위치는 수신 패킷에 대해 항상 Source MAC 학습부터 수행한다.
- L3 스위치는 수신 패킷의 Destination MAC 주소가 L3 스위치의 MAC 주소이면 IP 라우팅시키고, 그렇지 않은 경우는 Ethernet 스위칭시킨다.
- L3 스위치는 IP 라우팅 과정에서 RIB/FIB에 명시된 OIF(Outgoing Interface)가 물리적 포트가 아닌 VLAN ID 정보가 될 수 있으므로, 실제 패킷을 송신할 출력 포트를 확인하기 위해서는 MAC 테이블을 참조해야한다. 즉,
- FIB lookup을 통해 Next Hop IP와 OIF를 알아내고
- ARP 테이블 lookup을 통해 Next Hop IP에 대한 MAC 주소를 알아내고 (만약 목적지가 L3 스위치와 바로 연결된 경우라면, Destination IP 주소에 대한 MAC 주소를 알아냄)
- MAC 테이블 lookup을 통해 MAC 주소에 대한 물리적 포트를 알아낸다 (만약 IP 라우팅 과정에서 MAC 테이블에 해당 엔트리가 존재하지 않으면, VLAN 테이블을 참조하여 OIF에 속한 모든 물리적 포트로 패킷을 Flooding 함)
해당 게시글에서 발생한 오탈자나 잘못된 내용에 대한 정정 댓글 격하게 환영합니다😎
Reference