Profile picture

[네트워크] VLAN 이해하기 #2

JaehyoJJAng2023년 05월 11일

개요

지난번에 작성한 [네트워크] VLAN 이해하기 #1에 이어 VLAN에 대해 계속 이야기해보겠다.

아래 그림은 [네트워크] VLAN 이해하기 #1에서 봤던 그림이랑 조금 다르다. 이번에는 라우터와 스위치 사이에 VLAN 10,20 ... VLAN 100까지 총 10개의 VLAN이 존재한다.

자, 지금처럼 많은 VLAN을 사용한다면 라우터와 스위치 사이의 VLAN 설정은 어떻게 해야하는걸까? 라우터와 스위치 사이에 VLAN이 추가로 필요할 때마다 라우터와 스위치 사이에 포트를 하나 추가하고 해당 포트에 VLAN을 부여해야 할까? 스위치는 몰라도 그만큼의 포트를 가지고 있는 라우터는 없을거다.
image
VLAN이 추가될 때마다 포트 하나를 추가하고 거기에 VLAN을 할당하는 것은 매우 비효율적이다. VLAN ID는 1번부터 4096번까지 존재하니 이론상으로는 4096개의 포트가 필요할거다. 스위치와 라우터에는 그만한 포트도 없을뿐더러 VLAN마다 별도의 포트를 부여하는 것은 매우 비효율적이다. 이에 다수의 VLAN이 하나의 포트를 사용할 수 있도록 만든 기능이 있으니 그것이 바로 Trunk(Tagging) 이라는 기술이다.


Trunk(Tagging)

스위치 간 프레임 전달에 하나의 물리적 연결(포트)을 공유함.
VLAN Trunking된 스위치들 간에 여러 VLAN에서 나온 frame들을 이 트렁크 포트를 통해 전달함


위의 설명처럼 **트렁크(Trunk)**는 스위치와 스위치의 프레임(Frame,2계층에서 사용되는 데이터 단위인 이더넷 프레임) 전달 시에 하나의 포트에 다수의 VLAN이 지나갈 수 있도록 해주는 링크라고 보면 된다. 이 트렁크 설정이 적용된 양쪽 스위치의 포트를 Trunk Port라고 부른다.

Cisco에서는 보통 트렁크 포트(Trunk Port)라고 부르고 기타 벤더에서는 **태그드 포트(Tagged Port)**라고 부른다.
그리고 Trunk Port가 적용되지 않은 일반 포트, 즉 하나의 VLAN만이 설정되어 있는 포트를 **액세스 포트(Access Port)**라고 부른다.
image


위의 그림에서 볼 수 있듯이 스위치 1의 VLAN 1과 VLAN 2모두 Trunk가 설정된 Trunk Port를 통해 서로 통신이 가능하다. 이렇게 하나의 포트에서 다수의 VLAN이 통과할 수 있도록 하여 포트를 절약할 수 있게된다.

VLAN 1과 VLAN 2의 프레임 이동 순서는 다음과 같다.

VLAN 1 단말 -> 스위치 1의 액세스 포트 -> 스위치 1의 트렁크 포트 -> 스위치 2의 트렁크 포트 -> 스위치 2의 액세스 포트 -> VLAN 1 단말

VLAN 2 단말 -> 스위치 1의 액세스 포트 -> 스위치 1의 트렁크 포트 -> 스위치 2의 트렁크 포트 -> 스위치 2의 액세스 포트 -> VLAN 2 단말

가장 먼저 보았던 그림(개요)에 Trunk를 적용하면 아래와 같은 구성도가 나온다. 이제 VLAN 10과 VLAN 20은 하나의 트렁크 포트를 통해서 라우터와 통신을 할 수 있고, VLAN 10은 라우터에 경유하여 VLAN 20과 통신할 수 있다. 앞서 말했던 Inter-VLAN Routing이다.
image

여기까지 왔으면 이제 궁금한게 하나 생겼을 것이다. 하나의 포트에 여러 VLAN이 지나간다면 프레임이 포트를 들어갔다가 나올 때 해당 프레임이 어떤 VLAN인지 판별할 수 있는 방법은 뭐지? IP를 보면 알 수는 있겠지만 Layer 2계층의 데이터인 이더넷 프레임은 IP Header를 구분할 수 없다.

그래서 이더넷 프레임에 태그를 삽입하여 트렁크 포트를 지나는 이더넷 프레임의 **VLAN ID(VLAN 번호)**를 구별할 수 있도록 하기 위한 방안이 생겨났는데 그것이 바로 IEEE 802.1Q이다.


IEEE 802.1Q

IEEE 802.1Q는 하나의 이더넷 네트워크에서 가상 랜(VLAN)을 지원하는 네트워크 표준이다.

IEEE 802.1Q는 VLAN을 지원하는 네트워크 표준으로 트렁킹 프로토콜 중 하나이다. 스위치와 스위치 사이의 트렁크 포트에서 VLAN ID 정보를 전달하기 위한 방법이다.

트렁크로 설정된 포트로 이더넷 프레임이 진입할 때 이 프레임의 VLAN ID가 기록된 태그를 이더넷 프레임의 내부에 끼워넣는다. 이렇게 해서 이더넷 프레임을 확장하는데 이 방법으로 건너편 스위치에서 이 프레임을 받을 때 이더넷 프레임에 기록된 태그를 보고 VLAN ID를 판별할 수 있게 되는 것이다.
image

위의 그림을 보면 802.1Q Header가 삽입된 것을 확인할 수 있다. 802.1Q Header를 자세히보면 VLAN ID에 해당하는 VID가 존재한다.
스위치는 트렁크 포트를 통해 건너온 이더넷 프레임을 확인할 때 VID 부분을 보고 이 이더넷 프레임이 소속된 VLAN을 알 수 있게 되는 것이다. 그리고 다시 한 번 말하지만 이더넷 프레임을 **'확장'**하는 방식을 사용하고 있다.


image
802.1Q를 사용하여 통신하는 각각의 VLAN과 스위치를 그림으로 표현하면 위와 같다. 스위치는 스위치 간의 이더넷 프레임 전달 시 VID를 헤더에 확장한 후 전달하여 VLAN10, VLAN 20, VLAN 30을 구별할 수 있도록 도와준다.

즉 IEEE 802.1Q는 하나의 링크를 통해 다수의 VLAN이 통신할 때 사용되는 일종의 깃발임을 의미한다.


Trunk에 관련한 이야기는 여기까지 이고 다음 포스팅에서는 IEEE 802.1Q와 액세스 포트에 관해 애기하고 마무리 지을 것이다.


Loading script...