개요
지난 포스팅([네트워크] VLAN 이해하기 #2)에서 IEEE 802.1Q에 대해 다시금 간단하게 정리해보자.
스위치와 스위치 사이에서 하나의 물리적인 링크를 통해서 다수의 VLAN에 소속된 이더넷 프레임을 전달하고자 할 때 사용하는 것이 IEEE 802.1Q이다. 그리고 IEEE 802.1Q가 적용된 포트, 즉 다양한 VLAN Tag(VLAN ID)를 지닌 이더넷 프레임이 지나갈 수 있는 통로(포트)를 트렁크 포트라고 한다.
트렁크가 설정된 포트에서 이더넷 프레임이 나갈 때 IEEE 802.1Q는 이더넷 프레임의 헤더를 확장하여 중간에 VLAN 관련 TAG(VLAN ID)를 집어넣는다. 그 Tag를 통해 해당 이더넷 프레임이 어느 VLAN 소속인지를 구별하는 것이다
그렇다면 하나의 VLAN만이 적용된 액세스 포트(Access Port)에서 이더넷 프레임이 이동할 때에는 VLAN Tag(VLAN ID)는 어떻게 변화할까?
트렁크 포트처럼 이더넷 프레임 헤더에 VLAN Tag를 붙이나? 예를 들어 VLAN 10이 설정된 액세스 포트라면 802.1Q header에 'VLAN ID 10'이 삽입 되는걸까? 예시를 통해 알아보도록 하자.
위 그림을 보면 두 개의 스위치를 두고 양쪽 끝단에 PC 2대가 존재한다. 그리고 Subnet Mask는 10.11.0.0/24 대역으로 서로 동일한 서브넷에 위치하고 있다. 그런데 각각의 스위치는 액세스 포트에 설정된 VLAN이 다르다.
왼쪽의 스위치는 두 개의 액세스 포트(E0,E1)에 VLAN 10을 할당하였고, 오른쪽의 스위치는 두 개의 액세스 포트(E0,E1)에 VLAN 20을 설정하였다. 이 상태에서 양쪽 끝단의 PC는 서로 ICMP Check(Ping)를 할 수 있을까?
양쪽 끝단의 PC는 서로 ICMP Check(Ping)이 가능하다. 왜 가능한걸까? 서로 다른 VLAN에 존재하는데 어떻게 가능한걸까?
VLAN을 사용하는 이유는 브로드캐스트 도메인을 나누어 스위치와 단말에 전달되는 부하를 줄인다고 말했었다. 그리고 스위치는 액세스 포트에 설정된 VLAN을 보고 동일한 VLAN에 한해 브로드 캐스트를 전달한다. 이를 통해 동일한 VLAN 소속간의 단말들이 통신을 하게 되는 것이다.
그렇지만 위의 그림에서는 각각의 스위치의 액세스 포트에 서로 다른 VLAN이 설정되어 있음에도 통신이 가능한 상황이다. 이유가 뭘까?
Access Port의 진실
하나의 VLAN만이 설정되어 있는 스위치의 포트를 Access Port(액세스 포트)라고 부른다
결론을 먼저 말하자면 액세스 포트(Access Port)는 VLAN tag와 전혀 상관이 없다.
트렁크 포트를 통해 나가는 이더넷 프레임일 경우에만 VLAN Tag(VLAN ID)가 적용이 되는 것이다. 이를 다시 말하면 액세스 포트는 자신에게 나가거나 들어오는 이더넷 프레임이 소속된 VLAN을 구별할 수가 없다는 뜻이다. 액세스 모드가 적용된 포트의 VLAN 판단 기준은 포트에 할당된 VLAN이다.
스위치는 액세스 포트로 들어오는 이더넷 프레임의 VLAN ID를 구별하지 못하고 그저 포트에 설정된 VLAN ID에 속하는 이더넷 프레임이라고 생각하는 것이다. 이를 그림과 함께 다시 살펴보자.
먼저 PC 0이 ARP Request를 PC 2로 전달하는 과정을 살펴보자.
- PC 0이 PC1과 통신하기 위해 10.11.0.2/24에 대한 MAC 주소를 알고자 ARP Request를 보냄.
ARP Request은 스위치1의 E0 액세스 포트를 향해 전송됨.
- 스위치1은 ARP Request가 진입한 E0 액세스 포트의 VLAN이 '10'임을 확인하고 ARP Request를 동일한 VLAN '10'이 설정된 E1 포트를 통해 내보냄.
(ARP Request와 같은 브로드캐스트는 들어온 포트를 제외한 나머지 포트로 Flooding 함.)
스위치1의 E1 포트를 통해 나간 ARP Request는 스위치2의 E0 액세스 포트로 진입함.
스위치2는 ARP request가 진입한 E0 액세스 포트의 VLAN이 '20'임을 확인한 후, ARP Request를 동일한 VLAN '20'이 설정된 E1 포트를 통해 내보냄.
(ARP Request의 이더넷 프레임에는 VLAN ID가 없기에 VLAN 구별이 불가능)
- PC1는 ARP Request를 받고 자신의 IP가 목적지로 되어있음을 확인하고 ARP Response를 PC0에게 전송함.
이후 PC 1가 PC 0에게 ARP Response를 날리는 과정 역시 위와 동일하다. 그렇게해서 PC0과 PC1은 ICMP Check가 가능한 것이다.
여기서 중요한 것은 트렁크가 아닌 액세스의 경우 이더넷 프레임에 VLAN ID가 없기 때문에 포트에 설정된 VLAN ID를 보고 진입하는 이더넷 프레임을 판단한다는 것이다.