Vlan(Virtual Lan)이란 무엇이며 어떻게 동작할까? (Access Port와 Trunk Port 그리고 Native Vlan)

반응형
VLAN(Virtual Local Area Network)이란?

하나의 물리적인 스위치 장비 하나로 가상의(논리적인) LAN을 구성한 것을 말한다. 아래 이미지처럼 'PC-스위치-서버'로 연결된 로컬 네트워크 망(LAN) 하나의 브로드캐스트 도메인이라 한다.

  • 브로드캐스트 도메인(Broadcast Domain) - 특정 네트워크 상의 모든 장치가 통신할 수 있는 영역으로 브로드캐스트 패킷이 전달될 수 있는 범위를 말한다.(브로드캐스트 도메인이 곧 하나의 LAN이라고 보면 된다.)

 

위 구성에서 각 서버에 접근해야 하는 PC가 여러 대 추가되고, Server4 추가된다고 가정해 보자.

 

서버 하나당 물리 스위치로 LAN을 분리하는 경우 스위치와 케이블을 별도로 구매해야 하고, 하나의 LAN 내 PC의 수가 작을 겨우 사용하지 않는 스위치 포트가 생긴다. 그래서 하나의 물리 스위치를 이용해 여러 개의 가상 LAN을 설정하는 것이 바로 VLAN(Virtaul Lan) 기술이다. 아래 이미지를 참고하자.

각 Vlan은 물리적인 스위치를 통해 논리적으로 구성되고, 어떤 Vlan에 속하는 패킷인지 식별하기 위해 VLAN ID 또는 VLAN 태그를 사용한다. VLAN ID는 1~4094까지 설정할 수 있다. (보통은 default vlan이 1이므로 CLI에 2-4094까지 뜨는 경우도 있다.) 

위 이미지의 구성에 대해 설명하자면, 하나의 스위치에 Vlan 100과 Vlan 200을 생성하여 가상으로 LAN을 분리해놓은 상태이다. 왼쪽에 있는 PC는 Vlan 100에 속하고, 오른쪽에 있는 PC는 Vlan 200에 속하므로 서로 통신이 불가능하다. 하나의 스위치에서 Vlan을 나눔으로써 브로드캐스트 영역을 줄일 수 있는 것이다. 서로 다른 Vlan끼리 통신하기 위해선 게이트웨이 역할을 해주는 L3 장비(라우터나 L3 스위치)가 필요하다.

 

 

Access Mode(Access Port)

많은 분들이 Vlan 간 통신에는 태그가 무조건 붙는다고 오해하고 있는 경우가 많다. 아래 그림에서 왼쪽 PC가 보내는 패킷에 Vlan 100 태그가 붙고, 오른쪽 PC로 가는 패킷에 Vlan 200 태그가 붙을 것이라고 생각할 수 있는데, 실제로는 그렇지 않다. 일반적으로 Vlan 정보는 스위치만 이해할 수 있고, 데이터를 송신 및 수신하는 PC는 Vlan 정보에 대해 인지하지 못한다.

그렇다면 아래의 트래픽 흐름은 어떻게 동작할까? 먼저 Switch Port 하나에 한 개의 Vlan만 설정하는 것을 Access Mode라고 하고, 하나의 Vlan이 설정된 Switch Port를 Access Port라고 한다. 스위치는 특정 포트를 통해 트래픽이 들어오면, 그 포트가 속한 Vlan 번호를 보고, 그 Vlan 번호와 동일한 Vlan에 속하는 Port들을 동일한 Lan으로 인식하여 해당 트래픽을 flooding 한다. 트래픽이 스위치 포트 간 전송될 때도 Tag는 달고 나가지 않는다.

 

위 그림에서 왼쪽 PC(10.10.10.10)에서 오른쪽 PC(10.10.10.11)로 Ping 통신할 경우 아래와 같이 동작한다.

  1. SW1은 10.10.10.10에서 보낸 프레임의 Source Mac 주소를 보고 MAC Table을 생성한다.
  2. SW1은 인입된 트래픽이 속한 포트가 Vlan 100에 속하는 것을 확인하고, Vlan 100으로 설정된 나머지 포트로 ARP request를 Flooding 한다.
  3. SW1 -> SW2로 가는 프레임은 아무런 태그 정보가 추가되지 않은 단순한 이더넷 프레임이다.
  4. SW2는 ARP Request 프레임의 Source MAC 주소를 보고 MAC Table을 생성한다.
  5. SW2는 Vlan 200으로 설정된 포트로 프레임이 들어왔기 때문에, 해당 포트의 Vlan 200과 동일한 오른쪽 포트로 ARP Request를 flooding 한다.
  6. 10.10.10.11은 수신된 ARP Request 패킷의 IP가 자신의 IP가 동일하고, 출발지 IP가 자신의 인터페이스 서브넷에 속하는 IP이므로, ARP Reply를 송신한다. (출발지 IP가 자신의 인터페이스 서브넷에 속하는 대역이 아닐 경우 discard 한다.)
  7. 양쪽 스위치에서 이미 10.10.10.10의 MAC 주소가 학습되어 있으므로 정상적으로 unicast 통신을 한다.

위 과정에서 와이어샤크를 통해 패킷을 캡처해 보면 Vlan ID or Tag는 전혀 사용되지 않음을 알 수 있다. (시간이 되면 에뮬레이터로 구현해서 컨피그와 캡처화면을 올려보겠다..) 그럼 Vlan Tag는 언제 사용되는 걸까?

 

802.1Q Tagged Port - Trunk Mode(Trunk Port)

위 그림을 보면 SW1과 SW2 간 서로 다른 Vlan 3개가 통신하기 위해 물리적으로 케이블 3개를 연결했다. 위에서 Access Vlan은 포트 하나당 Vlan 하나만 설정할 수 있다고 했고, Vlan ID는 1~4094까지 생성할 수 있다고 했었다. 그럼 네트워크에 4094개의 Vlan을 생성하고 각각의 동일한 Vlan끼리 통신을 하려면 4094개의 케이블 연결이 필요하다는 말이 된다. 제조사, 모델마다 다르지만 일반적으로 스위치 포트는 24P 혹은 48P가 대부분이고, 필요한 Vlan에 따라 케이블 연결을 하나씩 늘린다는 것은 상당히 비효율적인 방법이다. 그래서 등장한 것이 802.1Q Tagged Vlan이다. 이 802.1Q Tag가 부여된 트래픽이 통과하는 물리적인 링크(포트)를 Tagged Port라고 한다. Cisco에서는 Trunk Port라고 한다.

 

아래 그림에서는 SW1과 SW2 사이에 물리적 케이블이 하나만 연결되어 있다. 그럼에도 각각의 동일한 Vlan 끼리 통신할 수 있는데, 이를 위해선 스위치에서 어떤 프레임이 어느 Vlan에 속하는지 구분하기 위한 뭔가가 필요하다. 그래야 하나의 케이블을 통해 타고 들어온 트래픽이 속해있는 Vlan과 동일한 Vlan이 설정된 포트로 구분해서 보내줄 수 있기 때문이다! 이때 사용되는 것이 Vlan Tag로 이더넷 프레임에 4Bytes 만큼 추가된다.

 

아래는 이더넷 프레임 구조를 나타낸 그림이다.

4Bytes의 Vlan Tag에는 VID라고 하는 12 Bits의 필드가 있다. 12 bits이므로 0에서 4095까지 4096개의 표현이 가능한데, 0과 4095를 제외하고 1부터 4094까지 Vlan ID로 사용할 수 있다. 스위치에서 이 Vlan ID 필드에 해당하는 숫자를 보고 어느 Vlan으로 보내줄지 구분하여 전송한다.

(후.. Vlan만 해도 정말 공부할게 많은 것 같다.)

 

Untagged Vlan(Native Vlan)

Untagged Vlan은 Tagged Port(Trunk Port)를 사용하는 환경에서 태그를 달지 않고 보내는 Vlan을 말한다. Native Vlan이라고도 하며, Native Vlan은 한 개만 설정할 수 있다. 스위치 사이에 Vlan 정보를 식별하지 못하는 네트워크 장비(ex. 허브)가 있을 경우 혹은 태그가 부착되지 않은 프레임을 스위치가 수신한 경우 이를 기본적으로 어느 Vlan으로 보낼지 지정하는 것이 바로 Native Vlan이다. 즉, Trunk Mode에서 스위치가 Vlan 태그가 없는 프레임을 수신하면, Native Vlan으로 판단하여 해당 스위치의 Native Vlan으로 지정된 포트로 보낸다.

위 구성에서 Native Vlan이 1일 때(기본값이 1임), VPC 10 -> VPC 11로 Ping Test 시 스위치 Gi 0/0 인터페이스를 캡처한 화면이다.

Native Vlan을 100으로 설정했을 때 아래 캡처 화면과 같이 Vlan Tag가 없는 것을 볼 수 있다.

Vlan 200에 속해있는 PC끼리 통신 테스트를 해보면 Vlan 태그가 보이는 것을 알 수 있다.

 

추가로 두 대의 스위치를 연결할 경우 일반적으로 Native Vlan을 서로 같게 해 준다. Native Vlan이 서로 다를 경우 태그가 없는 상태에서 전송되기 때문에 서로 다른 Vlan 끼리 통신하는 경우가 발생할 수 있다. Cisco에서는 CDP(Cisco Discovery Protocol)를 이용해 스위치 양쪽 포트의 Native Vlan이 서로 다를 경우 mismatch 경고 문구를 통해 알려준다.

 


예전에 노션에 기록해둔 내용을

다시 정리하면서 복습했는데

생각보다 시간이 꽤 걸렸다..

역시 네트워크는 복습이 제일 중요한 거 같다.

(아직 정리할 게 산더미인데 언제 다하지..)

 

혹시라도 틀린 부분이 있다면 피드백 부탁드립니다~

반응형