안녕하세요
뚱보 프로그래머 입니다.
오늘은 MAC 주소 및 IP 주소의 관계에 대해서 적어봅니다.
이더넷에서 IP패킷이 목적지로 전송되기 위해서는 넥스트 홉 장비의 MAC 주소를 알아야 한다. 그림에서 IP 주소가 1.1.1.1인 R1에서 1.1.1.2인 R2로 핑을 하는 경우를 생각해 보자. 'ping 1.1.1.2' 라는 명령을 입력하면 R1은 자신이 전송하는 패킷의 목적지 IP 주소가 1.1.1.2라는 것을 알게 된다.
그러나, IP주소가 1.1.1.2인 장비의 MAC 주소는 알지 못한다. 목적지 MAC 주소를 모르면 이더넷 프레임을 만들 수 없다.
따라서 특정 IP 주소에 해당하는 MAC 주소를 알아내는 방법이 필요하다.
목적지 IP 주소로 가기위한 넥스트 홉(next hop) 장비의 MAC 주소를 결정하는 것을 'IP주소와 넥스트 홉 링크 레이어(link layer) 주소를 매핑(mapping)한다' 고 한다. 넥스트 홉 맵핑 방식은 이더넷, 프레임 릴레이, ATM 등 링크 레이어 프로토콜에 따라 다르다. 또, 목적지 IP 주소가 유니캐스트, 멀티캐스트 및 브로드캐스트의 경우로 구분된다.
목적지 IP가 브로드캐스트 주소이면, 이더넷의 MAC 주소도 브로드캐스트로 변환되고, IP가 멀티캐스트 주소이면 MAC 주소도 멀티캐스트로 변환된다. 마찬가지로 목적지 IP 주소가 유니캐스트이면 상대 장비의 유니캐스트 MAC 주소가 필요하다.
- IP 브로드캐스트 주소와 MAC 주소 매핑
IP 주소중 호스트 부분이 모두 이진수 1인 것을 브로드캐스트 주소라고 한다. 예를 들어 255.255.255.255, 1.1.255.255/24 등의 주소가 여기에 해당한다. 목적지가 브로드캐스트 주소이면 해당 네트워크에 속하는 모든 장비가 이 패킷을 수신하고 해독해야만 한다.
IP의 목적지 주소가 브로드캐스트이면 MAC 주소의 브로드캐스트 주소인 FFFF.FFFF.FFFF로 매핑되어 전송된다. 스위치는 수신 인터페이스와 동일한 VLAN에 속한 모든 포트로 브로드캐스트 프레임을 플러딩한다. 브로드캐스트 프레임을 수신한 모든 호스트들은 프레임의 내용을 해독하여 자신에게 해당되는 것인지를 판단한다.
- IP 멀티캐스트 주소와 MAC 주소 매핑
멀티캐스트 주소는 특정한 그룹의 장비들에만 해당 패킷을 전송할 때 사용된다. OSPF나 EIFRP와 같은 라우팅 프로토콜들이 라우팅 정보를 송신할 때 멀티캐스트 주소를 사용한다. 또, 화상회의나 방송중계 등 같은 내용을 동시에 다수에게 전송하는 어플리케이션에서도 멀티캐스트를 많이 사용한다.
IP의 목적지 주소가 멀티캐스트(multicast)이면 MAC 주소의 앞부분은 항상 0100-5e로 변환되며, 뒷부분은 IP 멀티캐스트 주소의 뒷부분 23비트를 16진수를 변환하여 사용한다. 만약, IP 멀티캐스트 주소가 224.0.0.1이라면, MAC 주소는 0100-5e00-0001로 매핑된다. 따라서, MAC 주소가 0100-5e로 시작되는 프레임을 수신한 스위치들은 해당 프레임이 멀티캐스트 프레임이라는 것을 알게 된다.
멀티캐스트 MAC 주소는 IP 주수와 함께 사용되는 0100-5E로 시작하는 것들뿐만 아니라 0100.0ccc.cccc(CDP등), 0180.c200.0000(STP)등에서 사용하는 것들도 있다. IEEE 표준에 따르면 MAC 주소의 8번째 비트가 1인 것은 모두 멀티캐스트 MAC 주소이다. 따라서, 16진수로 표시된 MAC 주소중에서 0x01로 시작되는 것은 모두 멀티캐스트 MAC 주소이다.
기본적으로 스위치들은 멀티캐스트 프레임을 플러딩한다. 그러나, IGMP 스누핑(snooping), CGMP등과 같은 프로토콜을 이용하거나, 정적인 멀티캐스트 주소 설정을 통하여 멀티캐스트 프레임을 필요한 포트로만 전송하기도 한다. 대부분의 카탈리스트 스위치는 기본적으로 IGMP 스누핑이 활성화되어 있으므로 멀티캐스트 프레임을 플러딩하지 않는다.
- 동일 네트워크에서의 ARP
패킷 목적지 IP 주소가 유니캐스트(unicast)일 때는 ARP(address resolution protocol)라는 프로토콜을 이용하여 넥스트 홉(next host) IP 주소와 MAC 주소를 매핑한다. 먼저, 다음 그럼처럼 출발지와 목적지의 IP가 동일한 네트워크에 속해 있는 경우에 ARP의 동작방식을 알아보자
1) 넥스트 홉 매핑을 해야하는 R1이 그림처럼 목적지의 MAC 주소를 브로드캐스트로 설정한 후 프레임을 전송한다.
2) 이 프레임을 수신한 스위치는 수신 포트를 제외한 모든 포트로 플러딩한다.
3) 자신의 MAC 주소를 찾는 ARP 브로드캐스트 프레임을 수신한 R2가 R1에게 응답 프레임을 전송한다.
4) R2의 응답 프레임을 수신한 R1이 IP 주소 1.1.1.2에 해당하는 R2의 MAC 주소를 알게 되고, 필요한 데이터의 송수신이 이루어진다. 이 과정을 R1에서 디버깅해 보면 다음과 같다.
이 디버깅 결과는 ARP 프레임의 MAC 헤더(header)가 아니라 해더 다음에 위치한 ARP 패킷의 내용을 표시한다. 따라서, ARP 요청시 목적지의 MAC 주소는 0000.0000.0000으로 표시되어 있다. 그러나, 프레임의 MAC 주소는 브로드캐스트 주소인 FFFF.FFFF.FFFF로 설정되어 전송된다.
- 외부 네트워크 주소에 대한 ARP
출발지와 목적지의 IP가 서로 다른 네트워크에 속해 있는 경우에 사용할 수 있는 ARP 방식은 두가지가 있다. 일반적으로 사용하는 방식은 목적지 IP 주소 대신 게이트웨이(라우터 또는 L3 스위치)의 IP 주소에 대해 ARP 프레임을 전송하는 것이다.
다른 방법은 직접 목적지의 IP 주소에 대해 ARP 프레임을 전송하는 것이다. 어느 경우든 게이트웨이가 ARP에 응답하여 자신의 MAC 주소를 알려준다. 결과적으로 두가지 방식 모두 외부 네트워크로 가는 넥스트 홉으로 게이트웨이 MAC 주소를 사용하게 되지만 ARP 요청방식이 다르다.
다음 그림에서 외부 네트워크와 통신하기 위해서 게이트웨이의 MAC 주소를 ARP하는 절차를 확인해 보자.
1. L2 스위치인 SW1에서 자신과 다른 서브넷인 1.1.2.2로 핑을 한다. 그러면, 출발지와 목적지 IP 네트워크 주소가 다르기 떄문에 패킷을 게이트웨이로 전송해야 한다.
2. 따라서, SW1은 게이트웨이 IP 주소인 1.1.1.1의 MAC 주소를 찾는 ARP 패킷을 저농한다.
3. 자신의 IP에 대한 ARP 요청 패킷을 수신한 라우터 R1은 자신의 MAC 주소를 SW1에게 알려준다.
이후 SW1은 외부 네트워크로 패킷을 전송할 때 목적지 MAC 주소를 라우터의 MAC 주소로 설정하여 보낸다. 테스트를 위하여 다음과 같이 SW1에서 디폴트 게이트웨이를 지정하고, interface vlan 1에 IP 주소를 부여하고, 인터페이스를 활성화시킨다.
스위치에 IP 주소를 부여하는 대표적인 방법중의 하나가 이처럼 interface vlan 명령어를 사용하는 것이다. 이렇게 만든 인터페이스를 SVI (switched virtual interface)라고 하며, 여기에 IP 주소를 부여하면 된다. 테스트를 위하여 R1에서도 다음과 같이 루프백 인터페이스를 만들고 몇 개의 IP 주소를 부여한다.
SW1에서 1.1.2.2, 1.1.3.3, 1.1.4.4로 핑을 한다. SW1은 게이트웨이 IP 주소인 1.1.1.1의 MAC 주소만 알면되므로 1.1.2.2로 핑을 했을때 1.1.1.1에 대해서 ARP 요청을 한다. 나머지 1.1.3.3, 1.1.4.4에 대해서는 이미 게이트웨이 1.1.1.1의 MAC 주소를 알고 있기 때문에 ARP 요청을 보내지 않는다.
통신후 SW1의 ARP 테이블을 확인해보면 1.1.1.1에 대한 MAC 주소 기록되어 있다.
즉, 1.1.2.2, 1.1.3.3, 1.1.4.4 등에 대한 MAC 주소는 기록되어 있지 않고, 또, 필요없다.
- 프록시 ARP를 이용한 넥스트 홉 매핑
이번에는 L2 스위치인 SW1에 게이트웨이 주소가 설정되어 있지 않은 경우를 다음 그림에서 살펴보자
1. L2 스위치인 SW1에서 자신과 다른 서브넷인 1.1.2.2 로 핑을 한다. 그러면, 출발지와 목적지 IP 네트워크 주소가 다르기 때문에 패킷을 게이트웨이로 전송해야 한다.
2. 그러나, SW1에 게이트웨이가 설정되어 있지 않다. 이때 SW1은 게이트웨이 IP 주소 대신 직접 목적지 IP 주소인 1.1.2.2의 MAC 주소를 찾는 ARP 패킷을 전송한다.
3. IP 주소 1.1.2.2의 MAC 주소를 찾는 ARP 패킷을 수신한 게이트웨이 라우터 R1은 다음과 같이 동작한다.
ARP 목적지 IP 주소가 라우팅 가능한 것이고, 프록시(proxy) ARP가 활성화되어 있으면 R1자신의 MAC 주소를 SW1에게 알려준다. 프록시 ARP란 라우터가 ARP 프로임을 수신했을 때 해당 네트워크가 자신의 라우팅 테이블에 있으면 라우터 자신의 MAC 주소를 알려주는 기능을 말한다.
ARP 목적지 IP 주소가 라우팅할 수 없는 것이거나, 프록시 ARP가 활설화되어 있지 않으면 ARP 응답을 하지 않는다.
R1에서 ARP 응답을 받은 경우, SW1은 외부 네트워크로 패킷을 전송할 때 목적지 MAC 주소를 R1의 MAC 주소로 설정하여 보낸다.
테스트를 위하여 앞서 SW1에서 설정한 게이트웨이를 다음과 같이 제거한다.
SW1에서 1.1.2.2, 1.1.3.3, 1.1.4.4에게 차례로 핑을 해보면, 각 경우마다 SW1은 목적지 IP에 대해서 직접 ARP 요청을 전송하고, 게이트웨이인 R1이 자신의 MAC 주소를 알려준다.
SW1의 ARP 테이블을 보면 1.1.2.2, 1.1.3.3, 1.1.4.4로 패킷을 보낼때 목적지 MAC 주소를 모두 R1의 F0/0 인터페이스의 MAC 주소인 0000.0000.0001로 설정한다.
만약 게이트웨이 라우터인 R1의 F0/0 인터페이스에 프록시 ARP 기능을 비활성화 시키면 R1이 ARP 요청을 수신하는 인터페이스의 IP 주소가 아닌 다른것에 대해서는 ARP 응답을 하지 않는다. 결과적으로 SW1에서 1.1.2.2, 1.1.3.3, 1.1.4.4 등으로는 통신이 되지 않는다.
다음과 같이 R1의 F0/0 인터페이스에서 프록시 ARP 기능을 비활성화시킨다.
SW1에서 clear arp 명령어를 사용하여 기존에 만들어진 ARP 정보를 제거한다.
이제 SW1에서 1.1.2.2로 핑을 해보면 R1이 ARP에 대해서 응답을 보내지 않고, 결과적으로 통신이 되지 않는다. SW1이 반복적으로 IP 주소 1.1.2.2에 대해서 ARP 요청을 보내지만 응답이 없다.
- 전송구간에 따른 MAC 주소 변화
L2 스위치는 수신한 프레임을 다른 포트로 전송할 때 MAC 주소를 변경하지 않는다
즉, IP 네트워크 주소가 동일한 구간이면 목적지까지 라우터나 L3 스위치 등 L3 장비가 없다.
이때는 다음 그럼처럼 프레임의 출발지와 목적지 MAC 주소가 변경되지 않고 그대로 전송된다.
그러나, 프레임 전송구간에 라우터나 L3 스위치 등 레이어 3 장비가 있으면 다음 그림과 같이 출발지와 목적지 MAC 주소 모두가 변경된다.
스위치에서 SW가 사용하는 MAC 주소는 모델별로 다르다. 예를 들어, 카탈리스트 3560, 3750은 다음과 같이 SW1 별로 서로 다른 MAC 주소를 사용한다.
그러나, 카탈리스트 3550이나 3550이나 이더스위치 모듈들은 다음과 같이 모든 SW1에서 동일한 MAC 주소를 사용한다.
따라서, 카탈리스트 3550이나 스어스위치 모듈 사용시, interface vlan 10과 interface vlan 20의 MAC 주소는 동이랃.
'IT > 네트워크관리사2급' 카테고리의 다른 글
스위치 동작 (0) | 2018.01.13 |
---|---|
MAC 주소 테이블 (0) | 2018.01.12 |
트랜스패런트 브리징 (0) | 2018.01.12 |
트랜스패런트 브리징 (0) | 2018.01.11 |
취득사진 (0) | 2018.01.11 |