스위칭과 라우팅... 참 쉽죠잉~ (2편: IP 라우팅)
Network/Network 2016. 8. 12. 12:45지난 시간에 이어 오늘 설명 드릴 내용은 아래 그림 우측 IP Routing입니다.
예전에 IP 분야 경력자 면접을 볼 때 우측 그림상에서 패킷 흐름/테이블 변화(아래 설명할 내용)를 화이트보드에 한번 그려 보라 한 적이 있는데요. 웃는 얼굴로 설명을 시작했지만 끝은 별로 좋지 않았다는...
지난 시간과 마찬가지로 망 구성도를 잘 봐 주시기 바랍니다. MAC/IP 값은 아래 테이블과 같습니다.
Server/Router | Port | MAC 주소 | IP 주소 |
SVR1 | lan1 | m1 | 1.1.1.10 |
SVR3 | lan1 | m3 | 2.1.1.30 |
R1
| ge1/1 | a1 | 1.1.1.1 |
ge2/1 | a2 | 2.1.1.1 |
IP Routing
1. SVR1 sends ARP Request
- IP 주소 1.1.1.10인 SVR1이 목적지 주소 2.1.1.30인 SVR3로 패킷을 전송하려 합니다.
- SVR1은 목적지 주소 2.1.1.30에 대해 자신의 Routing Table을 참조(lookup)하고, 그 결과 default route(0.0.0.0/0)에 매칭되어 "목적지로 가기 위해서는 Gateway는 1.1.1.1이고 출력 포트(OIF: Outgoing Interface)는 lan1"임을 알게 되었습니다. 보통 일반 PC의 경우 DHCP를 통해 IP 주소를 할당(임대) 받으면서 DHCP Option 3을 통해 Gateway 주소를 받아오고, 서버의 경우 운영자가 직접 Gateway 주소를 설정 합니다. 그러면 그 주소가 Routing Table에 인스톨 됩니다.
- Gateway(Default Gateway라고도 함)란 SVR1과 연결된(중간에 L2 스위치가 여러개 있던 없던 간에) 첫번째 라우터를 의미하며 이 Gateway는 나(SVR1)와 동일 네트워크에 존재합니다. (그림상에서 SVR1(1.1.1.10)과 연결된 첫번째 라우터 R1의 인터페이스 주소 1.1.1.1이 Gateway가 됨)
- SVR1은 Gateway 주소 1.1.1.1에 대한 MAC 주소가 ARP Table에 없어(ARP Miss) ARP Request 패킷을 lan1 포트로 내보내며 패킷 구성은 아래와 같습니다.
Header | Fields | |||||||||||||
Ethernet Header
| * Destination MAC = FF:FF:FF:FF:FF:FF(브로드캐스팅, 동일 LAN에 있는 모든 노드로 전달) * Source MAC = Sender(SVR1)의 MAC 주소 m1 | |||||||||||||
ARP Header
| * Sender MAC = ARP Request 패킷 송신자(sender), 즉 SVR1의 MAC 주소 m1 * Sender IP = ARP Request 패킷 송신자(sender), 즉 SVR1의 IP 주소 1.1.1.10 * Target MAC = 00:00:00:00:00:00임 (SVR1은 이 값을 알고 싶어 하는 것임) * Target IP = ARP Request 패킷 수신자(target), 즉 R1의 IP 주소 1.1.1.1 |
- 이제 이 패킷을 수신한 S1(스위치 1)은 Source MAC Learning을 수행(MAC 주소 m1은 fe1 포트에 연결되어 있음을 MAC Table에 저장)하고,
- 수신 패킷의 Destination MAC 주소를 참조하여 출력 포트를 정하게 되는데 이 경우는 브로드캐스팅 주소(FF:FF:FF:FF:FF:FF)입니다. 따라서 S1은 수신 포트를 제외한 나머지 포트로 Flooding 합니다. 따라서 이 패킷은 SVR2와 R1(라우터 1)이 수신합니다.
- SVR2는 수신된 ARP Request 패킷의 Target IP 주소가 자신의 것이 아님을 확인 후 버립니다.
2. R1 responds with ARP Reply
- ARP Request를 수신한 R1(라우터 1)은 Target IP 주소를 보고 자신의 MAC 주소를 물어 본 것임을 압니다. 따라서 R1은 1.1.1.1에 대한 MAC 주소를 Sender MAC 필드에 담아 ARP Reply 패킷을 ge1/1 포트로 내보내며, 그 패킷의 구성은 아래와 같습니다.
Header | Fields | |||||||||||||
Ethernet Header
| * Destination MAC = ARP Reply를 수신할 SVR1의 MAC 주소 m1 * Source MAC = Sender(R1)의 MAC 주소 a1 | |||||||||||||
ARP Header
| * Sender MAC = ARP Reply 패킷 송신자(sender), 즉 R1의 MAC 주소 a1 * Sender IP = ARP Reply 패킷 송신자(sender), 즉 R1의 IP 주소 1.1.1.1 * Target MAC = ARP Reply 패킷 수신자(target), 즉 SVR1의 MAC 주소 m1 * Target IP = ARP Reply 패킷 수신자(target), 즉 SVR1의 IP 주소 1.1.1.10 |
- 이 패킷을 수신한 S1은 Source MAC Learning을 수행(MAC 주소 a1은 fe3 포트에 연결되어 있음을 MAC Table에 저장)하고,
- 수신 패킷의 Destination MAC 주소 m1에 대한 MAC Table을 참조하여 해당 패킷을 fe1 포트로 패킷을 전달(유니캐스팅)합니다.
- 그리고 이 패킷을 수신한 SVR1은 자신의 ARP Table에 그 값(1.1.1.1의 MAC 주소 a1)을 저장합니다.
3. SVR1 sends IP Packet to R1
- 이제 SVR1은 SVR3로 IP 패킷을 보낼 준비가 되었습니다. SVR1은 아래와 같이 패킷을 구성하여 lan1 포트로 내보냅니다.
Header | Fields | |||||||||||||
Ethernet Header
| * Destination MAC = Receiver(R1)의 MAC 주소 a1 * Source MAC = Sender(SVR1)의 MAC 주소 m1 | |||||||||||||
IP Header
| * Destination IP = Receiver(SVR3)의 IP 주소 2.1.1.30 * Source IP = Sender(SVR1)의 IP 주소 1.1.1.10 |
- 이 패킷을 수신한 S1은 이미 Learning된 Source MAC 주소이므로 Source MAC Learning 과정은 생략하고, Destination MAC 주소 a1에 대한 MAC Table 참조를 통해 fe3 포트로 패킷을 보냅니다.
4. R1 sends ARP Request
- 패킷을 수신한 R1(라우터 1)은 자신의 FIB(Routing Table)를 참조하여 "목적지 주소 2.1.1.30은 나와 바로 붙어 있는 네트워크이고(Next Hop이 없으므로) 출력 포트는 ge2/1"라는 사실을 알게 되고,
- 이제 R1은 2.1.1.30에 대한 MAC 주소를 알기 위해 ARP Table을 참조합니다. 하지만 해당 엔트리가 없습니다(ARP Miss). 따라서 R1은 아래와 같이 ARP Request 패킷을 ge2/1 포트로 내보냅니다.
Header | Fields | |||||||||||||
Ethernet Header
| * Destination MAC = FF:FF:FF:FF:FF:FF(브로드캐스팅, 동일 LAN에 있는 모든 노드로 전달) * Source MAC = Sender(R1)의 MAC 주소 a2 | |||||||||||||
ARP Header
| * Sender MAC = ARP Request 패킷 송신자(sender), 즉 R1의 MAC 주소 a2 * Sender IP = ARP Request 패킷 송신자(sender), 즉 R1의 IP 주소 2.1.1.1 * Target MAC = 00:00:00:00:00:00임 (R1은 이 값을 알고 싶어 하는 것임) * Target IP = ARP Request 패킷 수신자(target), 즉 SVR3의 IP 주소 2.1.1.30 |
- 이 패킷을 수신한 S2(스위치 2)는 Source MAC Learning을 수행(MAC 주소 a2는 fe3 포트에 연결되어 있음을 MAC Table에 저장)하고,
- 수신 패킷의 Destination MAC 주소를 참조하여 출력 포트를 결정하는데 이 경우는 브로드캐스팅 주소(FF:FF:FF:FF:FF:FF)입니다. 따라서 S2는 수신 포트를 제외한 나머지 포트로 Flooding 합니다. 따라서 이 패킷은 SVR3과 SVR4가 수신합니다.
- SVR4는 수신된 ARP Request 패킷의 Target IP 주소가 자신의 것이 아니므로 버립니다.
5. SVR3 responds with ARP Reply
- ARP Request를 수신한 SVR3은 Target IP 주소를 보고 자신의 것임을 압니다. 따라서 SVR3은 2.1.1.30에 대한 MAC 주소를 Sender MAC 필드에 담아 ARP Reply 패킷을 lan1 포트로 내보내며, 그 패킷의 구성은 아래와 같습니다.
Header | Fields | |||||||||||||
Ethernet Header
| * Destination MAC = ARP Reply를 수신할 R1의 MAC 주소 a2 * Source MAC = Sender(SVR3)의 MAC 주소 m3 | |||||||||||||
ARP Header
| * Sender MAC = ARP Reply 패킷 송신자(sender), 즉 SVR3의 MAC 주소 m3 * Sender IP = ARP Reply 패킷 송신자(sender), 즉 SVR3의 IP 주소 2.1.1.30 * Target MAC = ARP Reply 패킷 수신자(target), 즉 R1의 MAC 주소 a2 * Target IP = ARP Reply 패킷 수신자(target), 즉 R1의 IP 주소 2.1.1.1 |
- 이 패킷을 수신한 S2는 Source MAC Learning을 수행(MAC 주소 m3는 fe1 포트에 연결되어 있음을 MAC Table에 저장)하고,
- 수신 패킷의 Destination MAC 주소 a2에 대한 MAC Table을 참조하여 해당 패킷을 fe3 포트로 패킷을 전달(유니캐스팅)합니다.
- 그리고 이 패킷을 수신한 R1은 자신의 ARP Table에 그 값(2.1.1.30의 MAC 주소 m3)을 저장합니다.
6. R1 sends IP Packet to SVR3
- SVR3의 MAC 주소를 알았으므로, 이제 R1(라우터 1)은 SVR1에서 SVR3로 향하는 패킷을 IP 라우팅 할 수 있습니다. R1은 아래와 같은 구성으로 SVR1이 보낸 패킷을 SVR3로 라우팅 시켜 줍니다.
Header | Fields | |||||||||||||
Ethernet Header
| * Destination MAC = Receiver(SVR3)의 MAC 주소 m3 * Source MAC = Sender(R1)의 MAC 주소 a2 | |||||||||||||
IP Header
| * Destination IP = Receiver(SVR3)의 IP 주소 2.1.1.30 * Source IP = Sender(SVR1)의 IP 주소 1.1.1.10 |
- 이 패킷을 수신한 S2(스위치 2)는 이미 Learning된 Source MAC 주소이므로 Source MAC Learning 과정은 건너뛰고, Destination MAC 주소 m3에 대한 MAC Table 참조를 통해 fe1 포트로 패킷을 전송하여 SVR3가 패킷을 수신합니다.
정리
출처 - http://www.netmanias.com/ko/post/blog/5502/arp-bridging-ip-routing-network-protocol/switching-and-routing-part-2-ip-routing
'Network > Network' 카테고리의 다른 글
OSPF 쉽게 이해하기 (2편: External Network 라우팅 정보 가져오기) (0) | 2016.08.12 |
---|---|
OSPF 쉽게 이해하기 (1편: Shortest Path Tree 토폴로지 생성 절차) (0) | 2016.08.12 |
스위칭과 라우팅... 참 쉽죠잉~ (1편: Ethernet 스위칭) (0) | 2016.08.12 |
In Memory Data Grid (0) | 2016.08.04 |
TCP - 신뢰적인 전송 5 : TCP는 실제 Sequence number와 Ack number field에 무엇을 채우는가? (0) | 2014.02.19 |