스위칭과 라우팅... 참 쉽죠잉~ (1편: Ethernet 스위칭)

Network/Network 2016. 8. 12. 12:42

제목이 좀 유치하죠? ^^* 말랑 말랑한 블로그 공간에서의 표현이므로 너그럽게 봐 주시기 바랍니다.

 

오늘과 내일에 걸쳐 L2(Ethernet) 스위칭과 L3(IP) 라우팅 과정에서 살펴 보도록 하겠습니다. 본 글을 통해 다음과 같은 내용을 설명 드리도록 하겠습니다.

  • ARP와 IP 패킷
  • 스위칭/라우팅 과정에서 Ethernet Header의 변화
  • 스위칭/라우팅 과정 전후로 단말과 스위치, 라우터의 테이블(Routing, ARP, MAC Table) 엔트리 변화

 

Switching과 Routing

 


 

위 그림은 앞으로(오늘과 내일) 설명드릴 망 구성도이므로 잘 봐 주시기 바랍니다. (특히 서버/라우터의 MAC, IP 주소, 스위치/라우터의 포트(인터페이스) 번호)

 

좌측 그림과 같이 Sender(SVR1)와 Receiver(SVR2)가 동일 네트워크(LAN)에 위치해 있는 경우 라우터 R1을 거치지 않고 스위치 S1을 통해 바로 통신이 되며 이 때의 패킷 구성은 다음과 같습니다. (동일 네트워크인지 아닌지 어떻게 구분하는지 궁금하시면 여기를 클릭)

 Header Fields     

 Ethernet Header

 

 * Destination MAC = Receiver(SVR2)의 MAC 주소 m2
 * Source MAC = Sender(SVR1)의 MAC 주소 m1

 IP Header

 

 * Destination IP = Receiver(SVR2)의 IP 주소 1.1.1.20
 * Source IP = Sender(SVR1)의 IP 주소 1.1.1.10

 

반면 우측 그림과 같이 Sender(SVR1)와 Receiver(SVR3)가 동일 네트워크(LAN)에 위치하지 않은 경우 라우터 R1을 거치게 되는데 이 때의 Ethernet Header 필드는 라우터를 사이에 두고 서로 값을 가지게 됩니다.

 

SVR1에서 R1으로 패킷 전송시

 Header Fields     

 Ethernet Header

 

 * Destination MAC = Router(R1의 ge1/1)의 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

 

R1에서 SVR3로 패킷 전송시

 Header Fields     

 Ethernet Header

 

 * Destination MAC = Receiver(SVR3)의 MAC 주소 m3
 * Source MAC = Router(R1의 ge2/1)의 MAC 주소 a2

 IP Header

 

 * Destination IP = Receiver(SVR3)의 IP 주소 2.1.1.30
 * Source IP = Sender(SVR1)의 IP 주소 1.1.1.10

 

 

Ethernet Switching

 


 

그림을 그리다 보니 너무 길쭉해 졌습니다. (다음 시간 그림은 더 길어요~)

 

1. SVR1 sends ARP Request

  • IP 주소 1.1.1.10을 가진 SVR1이 목적지 주소 1.1.1.20인 SVR2로 패킷을 전송하려 합니다.
  • 서버든 라우터든 패킷을 보내기 위해서는 일단 Routing Table을 참조합니다. Routing Table Lookup 결과 목적지 주소는 나(SVR1)와 동일 네트워크에 존재하고(라우팅 엔트리 1.1.1.0/24에 Gateway가 없음이 나와 동일 네트워크임을 나타냄), 출력 포트(OIF: Outgoing Interface)는 lan1입니다(그림에서 서버의 포트는 하나만 그렸으므로 다 lan1이죠).
  • 이제 SVR1은 목적지 주소 1.1.1.20에 대한 MAC 주소를 알기 위해 자신의 ARP Table을 참조합니다. 그런데 테이블이 비어 있습니다. (해당 엔트리가 없으면 ARP Miss라 부름)
  • 따라서 SVR1은 SVR2(1.1.1.20)의 MAC 주소를 알아내기 위해 lan1 포트로 ARP Request를 보냅니다. ARP Request 패킷은 아래와 같이 구성됩니다. 
  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), 즉 SVR2의 IP 주소 1.1.1.20
  • 이제 이 패킷은 S1(스위치 1)이 수신하고, 수신 패킷(스위치는 수신 패킷이 IP 패킷인지 ARP 패킷인지 관심 없음)의 Source MAC 주소를 배웁니다. 따라서 S1의 MAC Table에는 {MAC 주소 m1은 fe1 포트에 연결되어 있음}이 기록됩니다.
  • Source MAC Learning 직후 S1은 수신 패킷의 Destination MAC 주소를 봅니다. 브로드캐스팅 주소네요. 따라서 S1은 수신 포트를 제외한 나머지 모든 포트로(VLAN 설정이 있다면 동일 VLAN에 속한 모든 포트로) Flooding 합니다. 그래서 이 ARP Request 패킷은 SVR2와 라우터 R1이 수신을 합니다.
  • R1은 수신된 ARP Request 패킷의 Target IP 주소를 보고 이 주소가 내 것이 아님을 알고(R1이 소유한 주소는 1.1.1.1과 2.1.1.1) 버립니다.

 

2. SVR2 responds with ARP Reply

  • ARP Request를 수신한 SVR2도 Target IP 주소를 봅니다. 내 주소네요. 따라서 SVR2는 1.1.1.20에 대한 MAC 주소를 Sender MAC 필드에 담아 ARP Reply 패킷을  lan1 포트로 내보냅니다. ARP Reply 패킷은 아래와 같이 구성됩니다.
  Header     Fields         
 

 Ethernet Header  

 

 * Destination MAC = ARP Reply를 수신할 SVR1의 MAC 주소 m1
 * Source MAC = Sender(SVR2)의 MAC 주소 m2
 

 ARP Header   

 

 

 

 * Sender MAC = ARP Reply 패킷 송신자(sender), 즉 SVR2의 MAC 주소 m2
 * Sender IP = ARP Reply 패킷 송신자(sender), 즉 SVR2의 IP 주소 1.1.1.20
 * Target MAC = ARP Reply 패킷 수신자(target), 즉 SVR1의 MAC 주소 m1
 * Target IP = ARP Reply 패킷 수신자(target), 즉 SVR1의 IP 주소 1.1.1.10
  • 이 패킷을 수신한 S1은 Source MAC Learning을 하여 MAC Table에 {MAC 주소 m2는 fe2 포트에 연결되어 있음}를 기록하고,
  • 수신 패킷의 Destination MAC 주소 m1에 대해 MAC Table을 참조하여 fe1 포트로 패킷을 전달(유니캐스팅)합니다.
  • 그리고 이를 수신한 SVR1은 자신의 ARP Table에 그 값(1.1.1.20의 MAC 주소 m2)을 기록합니다.

 

3. SVR1 sends IP Packet to SVR2

  • 이제 SVR1은 SVR2로 IP 패킷을 보낼 준비가 되었습니다. 따라서 SVR1은 아래와 같은 구성의 IP 패킷을 lan1 포트로 내보냅니다.
  Header     Fields         
 

 Ethernet Header  

 

 * Destination MAC = Receiver(SVR2)의 MAC 주소 m2
 * Source MAC = Sender(SVR1)의 MAC 주소 m1
 

 IP Header   

 

 * Destination IP = Receiver(SVR2)의 IP 주소 1.1.1.20
 * Source IP = Sender(SVR1)의 IP 주소 1.1.1.10
  • 이 패킷을 수신한 S1(스위치 1)은 Source MAC Learning을 하려 봤더니 Source MAC 주소 m1은 이미 배운 MAC 입니다. 따라서 MAC Learning은 필요 없구요. Destination MAC 주소 m2를 MAC Table에서 찾아 보았더니 fe2 포트로 내보내면 된다고 적혀 있습니다.
  • 따라서 이 패킷은 fe2 포트를 통해 나가고, SVR2가 수신 합니다.

출처 - http://www.netmanias.com/ko/post/blog/5501/arp-bridging-ip-routing-network-protocol/switching-and-routing-part-1-ethernet-switching

: