본문 바로가기
Network Infra 쉽게 이해하기/L2 Network 쉽게 이해하기

VLAN 쉽게 이해하기 #3

by 네트워크 엔지니어 환영 2020. 12. 27.
반응형
이 글은 오리뎅이님의 <오리뎅이의 네트워크 사랑방>에 있는 글인 <VLAN - 그것이 알고싶다>(https://blog.naver.com/goduck2/220218907545)를 다수 참고하였음을 미리 알려드립니다.

지난 문서에서 IEEE 802.1Q에 대해 다루었는데요. 스위치와 스위치 사이에서 하나의 물리적인 링크를 통해 다수의 VLAN에 소속된 이더넷 프레임을 운반하고자 할 때 사용하는 것이라고 말씀드렸습니다. 그리고 IEEE 802.1Q가 적용된 포트, 다시 말해 다양한 VLAN Tag(VLAN ID)를 지닌 이더넷 프레임이 지나갈 수 있는 포트를 트렁크 포트라 하죠. 트렁크가 설정된 포트에서 이더넷 프레임이 나갈 때 IEEE 802.1Q는 이더넷 프레임의 헤더를 확장하여 중간에 VLAN 관련 Tag(VLAN ID)를 집어넣습니다. 그 Tag를 통해 이 이더넷 프레임이 어느 VLAN 소속인지를 구별하는 것입니다. 아래 그림을 보시면 이더넷 프레임의 헤더에 VLAN Tag(VLAN ID)가 담긴 802.1Q 헤더가 추가되는 모습을 볼 수 있지요.

<이더넷 프레임 헤더(출처 : 위키백과(https://ko.wikipedia.org/wiki/IEEE_802.1Q)>

그렇다면 하나의 VLAN만이 적용된 액세스 포트(Access Port)에서 이더넷 프레임이 이동할 때 VLAN Tag(VLAN ID)는 어떻게 변화할까요? 트렁크 포트의 경우처럼 VLAN Tag(VLAN ID)를 붙일까요? 예를 들어 VLAN 10이 설정된 액세스 포트라면 802.1Q Header에 'VLAN ID 10' 를 주입하는 것일까요? 사례를 통해 확인해보겠습니다.

<위의 경우, 통신이 될까요? 안 될까요?>

위 그림을 보시면 두 개의 스위치를 두고 양쪽 끝단에 PC 2대가 있습니다. 그리고 Subnet Mask는 동일하지요. 그런데 각각의 스위치는 액세스 포트에 설정된 VLAN이 다릅니다. 왼쪽의 스위치는 두 개의 액세스 포트에 VLAN 10을, 오른쪽의 스위치는 두 개의 액세스 포트에 VLAN 20을 설정했습니다. 이 상태에서 양쪽 끝단의 PC는 서로 ICMP Check(Ping)를 할 수 있을까요? 

양쪽 끝단의 PC는 서로 ICMP Check(Ping)를 할 수 있습니다. 황당하지 않으신가요? VLAN을 사용하는 이유는 브로드 캐스트 도메인을 나누어 스위치와 단말에 전달되는 부하를 줄일 수 있다고 말씀드렸지요. 그리고 스위치는 액세스 포트에 설정된 VLAN을 보고 동일한 VLAN에 한해 브로드 캐스트를 전달한다고 했습니다. 이를 통해 동일한 VLAN 소속의 단말들이 서로 통신하는 것이죠.

<서로 다른 VLAN임에도 통신이 가능한 두 대의 PC>

그런데 위의 그림에서는 각각의 스위치의 액세스 포트에 서로 다른 VLAN이 설정되어있음에도 통신이 가능한 상황입니다. 이게 어떻게 된 일일까요?

 

액세스 포트의 진실

하나의 VLAN만이 설정되어 있는 스위치의 포트를 Access Port(액세스 포트)라고 부릅니다.

출처 : VLAN 쉽게 이해하기 2
 [네트워크 엔지니어 환영의 AWS 기술블로그]

결론을 먼저 말씀드리면 액세스 포트는 VLAN Tag와 전혀 관련이 없습니다. 트렁크 포트를 통해 나가는 이더넷 프레임일 경우에 VLAN Tag(VLAN ID)가 적용이 되는 것이죠. 이를 다시 말하면 액세스 포트는 자신에게 나가거나 들어오는 이더넷 프레임이 소속된 VLAN을 구별할 수 없습니다. 액세스 모드가 적용된 포트의 VLAN 판단 기준은 포트에 바로 자신에게 설정된 VLAN입니다. 스위치는 액세스 포트로 들어오는 이더넷 프레임의 VLAN ID를 구별하지 못하고 그저 포트에 설정된 VLAN ID에 속하는 이더넷 프레임이라고 생각하는 것이죠. 이를 그림과 함께 다시 보겠습니다.

먼저 PC 1이 ARP Request를 PC 2로 전달하는 과정을 살펴보겠습니다.

1. PC 1이 PC2과 통신하기 위해 10.10.10.2/24에 대한 MAC 주소를 알고자 ARP Reqeust를 날립니다. ARP Reqeust은 Switch1의 e0 액세스 포트를 향해 갑니다.

2. Switch1은 ARP Reqeust가 진입한 e0 액세스 포트의 VLAN이 '10'임을 확인한 후, ARP Request를 동일한 VLAN '10'이 설정된 e1을 통해 내보냅니다.
(ARP Request와 같은 Broadcast는 들어온 포트를 제외한 나머지 포트로 전달하기 때문입니다.)

3. Switch1의 e1을 통해 나간 ARP Request는 Switch2의 e0 액세스 포트로 진입합니다.

4. Switch2는 ARP Request가 진입한 e0 액세스 포트의 VLAN이 '20'임을 확인한 후, ARP Request를 동일한 VLAN '20'이 설정된 e1을 통해 내보냅니다.
(ARP Request의 이더넷 프레임에는 VLAN ID가 없기에 VLAN을 구분할 수 없습니다.)

5. PC2는 ARP Request를 받고 자신의 IP가 목적지로 지정되어있음을 확인하며 ARP Response를 PC1에게 전송합니다.

이후 PC 2가 PC 1에게 ARP Response를 날리는 과정 역시 동일합니다. PC 1은 ARP Response를 전달받게 되죠. 그리고 PC 1와 PC 2는 ICMP Check가 가능하게 됩니다. 여기서 중요한 것은 트렁크가 아닌 액세스의 경우 이더넷 프레임에 VLAN ID가 없기 때문에, 포트에 설정된 VLAN ID를 보고 진입하는 이더넷 프레임을 판단한다는 것입니다. IEEE 802.1Q가 이더넷 프레임의 헤더를 확장하여 Tag(VLAN ID)를 장착하는 점에서 오는 특이점입니다. 참 흥미롭지 않나요?

이것을 모른다고 해서 스위치를 사용하는데 문제는 없습니다만, 어중간하게 알고 사용하는 것과 제대로 알고 사용하는 것은 나중에 큰 차이를 불러온다고 생각합니다. 저 또한 이것을 알고 나서 VLAN 관련 문제를 빠르게 해결할 수 있었던 사례가 있었기에 더더욱 자세히 보았네요. 여러분들도 오리뎅이님의 글을 읽고 VLAN에 대해 자세히 아셨으면 좋겠습니다. 감사합니다.

댓글