[Network] VLAN
본문 바로가기
IT 이야기/공부합시다

[Network] VLAN

by 찬찬이 아빠 2023. 6. 29.
반응형

개인적으로 네트워크 공부를 위해 정리한 내용들입니다.

함께 공부하자는 취지로 내용을 공유합니다.


1. 허브

여러분은 허브(Hub)란 단어를 들으면 무엇을 떠올리시나요?

전 아무래도 네트워크 계통에 일을 하다 보니 다수의 컴퓨터를 연결시켜주는 이더넷 허브(Ethernet Hub)를 떠올립니다.

이더넷 허브는 이더넷 네트워크인 Local Address Network(LAN)에서 다수의 컴퓨터를 연결해주는 장비입니다.

요즘엔 가정에서도 흔히 사용하고 있지요. 

IPTIME 社의 이더넷 허브

이더넷 허브(Ethernet Hub)는 이더넷 네트워크에서 여러 대의 컴퓨터, 네트워크 장비를 연결하는 장치이다. 같은 허브에 연결된 컴퓨터와 네트워크 장비는 모두 상호 간에 통신할 수 있게 된다. 

- 출처 : 위키백과 -
  • 많은 포트를 가진 허브에 컴퓨터를 연결함으로써 다수의 컴퓨터를 하나의 네트워크로 구성
  • 하나의 라우터(혹은 공유기)에 연결된 허브에서 다수의 컴퓨터가 연결
  • 가정에서 사용하는 공유기 역시 허브의 역할을 겸임하여 여러 개의 포트를 가지고 있고, 라우터를 사용하건 공유기를 사용하건 구성은 같음

허브로 구성한 네트워크

  • 허브는 자신의 인터페이스에 연결된 컴퓨터의 MAC Address를 저장/관리하지 않기 때문에 패킷의 출발지와 목적에 대한 정보를 갖지 않음
  • 목적지에 대한 정보가 없는 상태에서 패킷을 전달하려면 모든 포트에 패킷을 전달하는 수밖에 없음
  • 그래야 그중 실제 목적지에 해당하는 포트로 보낼 수 있기 때문
  • 그러다 보니 허브에 연결된 네트워크에서 한 컴퓨터가 주고받는 데이터는 연결된 모든 컴퓨터가 받게 되고 연결된 컴퓨터가 많아질수록 속도가 느려지고 충돌이 발생
  • 또한 이러한 충돌 감지를 위해 반이중 방식(Half-duplex) 방식을 채택하였기에 비효율적일 수밖에 없음
  • 위 그림을 보시면 허브의 아이콘 모양이 한쪽 방향의 화살표로만 표시되는 이유(물론 요즘엔 이러한 이더넷 허브는 보기 힘들만큼 희귀, 대신 MAC Address를 저장하는 스위칭 허브가 사용)

2. 스위치

Cisco 社의 2960L Series 스위치

  • 다수의 컴퓨터를 하나의 네트워크로 묶어 주는 역할을 하는 것은 스위치, 허브 모두 동일
  • 하지만 스위치는 자신의 포트에 연결된 MAC Address를 저장/관리하기 때문에 패킷의 출발지와 목적지 정보에 대해 파악할 수 있음
  • 한 컴퓨터에서 전송된 데이터를 모든 포트에 연결된 컴퓨터에 뿌리지 않고 목적지 포트에만 전송

스위치의 통신 방법

  • 스위치는 전이중 방식(Full-duplex)을 지원하기 때문에 충돌이 발생하지 않고 더 빠른 속도를 보장
  • 하지만 스위치와 허브를 가르는 가장 큰 차이점이 있으니 바로 VLAN(Virtual LAN)

3. VLAN이 필요한 이유

VLAN의 정의와 기능에 대해 알아보기 전에 VLAN이 필요한 이유에 대해 먼저 언급하고자 합니다.

그전에 LAN(Local Address Network)와 Broadcast에 대해 짚고 넘어가야 합니다.

LAN이란 집과 같은 소규모 네트워크에서부터 사무실, 회사와 같은 중규모 이상의 네트워크에 이르기까지 동일한 IP 대역과 동일한 Subnet Mask를 사용하며 Address Resolution Protocol(ARP)가 닿는 모든 범위를 뜻한다.
- 출처: LAN 쉽게 이해하기 -

브로드캐스트(Broadcast)란 컴퓨터 네트워킹, 정보 통신 및 방송등 모든 수신자에게 동시에 메시지를 전송하는 방법이다. 브로드 캐스팅은 프로그램에서 높은 수준의 다양한 응용 용도로 활용될 수 있다.
- 출처 : 위키백과 - 
  • LAN이란 ARP Request가 닿는 모든 범위
  • 이 ARP(Address Resolution Protocol)는 각 컴퓨터가 갖는 IP Address에 매칭되는 MAC Address를 알아내기 위한 Protocol
  • 또한 ARP Request는 연결된 네트워크 장비와 컴퓨터에 모두 전달
  • 이렇듯 송신자가 전달하는 메시지를 연결된 모든 컴퓨터가 전달받는 방식을 브로드캐스트(Broadcast)라고 함
  • ARP가 Broadcast를 사용하는 대표적인 프로토콜
  • 그리고 브로드캐스트를 전달할 때는 목적지 IP의 끝자리를 .255로 설정(10.10.10.x/24의 경우 10.10.10.255가 됨)
  • 네트워크 장비에 10대의 컴퓨터가 연결되어있다면 각각의 컴퓨터가 다른 컴퓨터의 MAC Address를 알기 위해 ARP Request를 날릴 것이고 이는 최소 10번의 ARP Request가 발생된다는 것을 의미
  • 컴퓨터가 1000대라면 ARP Request를 한 번씩만 날려도 최소 1000번의 ARP Request가 발생
  • 연결된 컴퓨터의 숫자가 많으면 많아질수록 발생하는 Broadcast의 양이 많아짐
  • 그럼 네트워크의 대역폭은 브로드캐스트로 점점 가득찰 것이고, 데이터 전달 속도가 눈에 띄게 느려질 것이며 시도 때도 없이 날아오는 브로드캐스트를 처리하는 컴퓨터는 다른 작업을 제대로 할 수 없게 됨

연결된 PC가 점점 많아진다면?

  • 또한 Subnet Mask가 다른 여러 개의 IP 대역을 사용하고 싶다면 어떻게 해야 할까요?
  • 아래 그림처럼 각각의 IP 대역을 사용하는 라우터(공유기)를 설치해야 할까요?
  • 그러기엔 비용이 더 들 뿐더러, 새로운 IP 대역이 추가되면 될수록 번거로운 작업이 됨
  • 이러한 문제를 해결할 수 있는 기능이 바로 VLAN(Virtual LAN)

다양한 Subnet Mask의 IP 대역이 필요하다면


4. VLAN이란?

컴퓨터 네트워크에서 여러 개의 구별되는 브로드캐스트 도메인(Broadcast Domain)을 만들기 위해 단일 2계층 네트워크를 분할할 수 있는데, 이렇게 분리되면 패킷들은 하나 이상의 라우터들 사이에서만 이동할 수 있다.
이러한 도메인을 가상 랜(영어: Virtual LAN)으로 부르며, 가상 근거리 통신망(영어: Virtual Local Area Network), 가상 LAN(영어: Virtual LAN), 또는 간단히 VLAN으로도 표기한다.

- 출처 : 위키백과 -
  • VLAN을 지원하는 네트워크 장비는 VLAN을 다수 생성할 수 있고 이 VLAN을 통해 브로드캐스트 도메인을 나눌 수 있음
  • 이렇게 나누어진 브로드캐스트 도메인은 VLAN이 설정된 포트에 연결된 단말의 IP 대역만이 통신이 가능
  • 다른 VLAN과 통신하기 위해서는 Layer 3 이상의 스위치 혹은 라우터를 통해서만 가능
  • 또한 VLAN은 1 ~ 4096까지의 번호를 사용하여 VLAN을 구분지을 수 있고, 이를 VLAN ID라고 함
  • VLAN이란 브로드캐스트가 서로 미치지 않는 여러 개의 논리적인 LAN을 만드는 것이라고 정의

 

  • 네트워크 장비의 포트 각각에 원하는 VLAN을 설정할 수 있음
  • 하나의 물리적인 스위치를 VLAN을 사용하여 다수의 (논리적인) LAN을 쓸 수 있도록 하는 것
  • VLAN 10과 VLAN 20을 각각 10.10.10.x/2410.10.20.x/24에 할당하여 표현하면 다음과 같음
  • 물리적인 인터페이스가 아닌 VLAN에 가상의 인터페이스를 생성하고 IP를 할당하여 L2 통신하기 때문에 논리적인 인터페이스, Switched Virutal Interface(SVI)가 사용됨

인터페이스에 VLAN 설정이 적용된 스위치

  • 스위치는 포트에 설정된 각각의 VLAN을 보고 트래픽 전달 여부를 판단
    • ex) PC 1이 연결된 스위치의 e2의 포트는 VLAN이 10이므로 동일한 VLAN 10이 설정된 포트로만 브로드캐스트를 전달
      • 이를 다시 말하면 PC1이나 라우터의 f0/0에서 전달되는 브로드캐스트는 VLAN 10이 설정된 포트로만 전달됨을 의미
    • ex) PC 2는 PC 3과 라우터의 f0/1 포트로 브로드캐스트를 전달
      • 즉, PC 2는 PC 3와 직접적으로 통신할 수 있음
      • PC 2와 PC 3 라우터의 f0/1 포트 모두 VLAN 20으로 설정, 다시 말해 동일한 브로드캐스트 도메인에 속하기 때문

 

  • VLAN의 기본 목적인 브로드캐스트 도메인 분할에 부합
  • 즉 VLAN을 적용함으로서 10.10.10.x/24과 10.10.20.x/24 IP 대역을 논리적으로 분할하여 사용
  • 그렇다면 PC 1(10.10.10.1/24)와 PC2(10.10.10.20.1/24)가 통신을 하려면 어떻게 해야 할까요?
  • Layer 3 이상의 장비인 라우터 혹은 L3 스위치를 통해 이동해야 함
  • 이들은 VLAN 간의 통신을 가능케 하는 기능을 가지고 있으며 이를 Inter-VLAN Routing 라고 함

5. Trunk(Tagging)

아래 그림과 같이 라우터와 스위치 사이에 VLAN 10,20,30,40, ... , 100까지 총 10개의 VLAN이 있습니다.

만약 아래 그림과 같이 많은 VLAN을 사용한다면 라우터와 스위치 사이의 VLAN 설정은 어떻게 해야 할까요? 

라우터와 스위치 사이에 VLAN이 추가로 필요할 때마다 라우터와 스위치 사이에 포트를 하나 추가하고 VLAN을 부여해야 할까요? 라우터가 그만큼 포트에 여유가 있는지 모르겠네요.

10개의 VLAN이 존재하는 네트워크

  • VLAN이 추가될 때마다 포트 하나를 추가하고 거기에 VLAN을 할당한다는 것은 매우 비효율적
  • VLAN ID는 1번부터 4,096번까지 있으니 이론상으로 4,096개의 포트가 필요
  • 스위치에는 그만한 포트도 없을뿐더러 VLAN마다 별도의 포트를 부여해주는 것은 매우 비효율적
  • 이에 다수의 VLAN이 하나의 포트를 사용할 수 있도록 만든 기능이 있으니 바로 Trunk(Tagging)
스위치 간 프레임 전달에 하나의 물리적 연결(포트)을 공유, VLAN 트렁킹된 스위치들 간에 여러 VLAN에서 나온 프레임들을 이 트렁크를 통해 전달함

- 출처 : 정보통신기술용어해설 -
  • 트렁크(Trunk)는 스위치와 스위치의 프레임(Frame, 2계층에서 사용되는 데이터 단위인 이더넷 프레임) 전달 시에 하나의 포트에 다수의 VLAN이 지나갈 수 있도록 기능하는 링크
  • 이 트렁크 설정이 적용된 양쪽 스위치의 포트를 Trunk Port(트렁크 포트)라고 부름
  • Cisco에서는 보통 트렁크 포트라고 부르지만 기타 벤더에서는 Tagged Port(태그드 포트)라고 부름
  • Trunk가 적용되지 않은 일반 포트, 그러니까 하나의 VLAN만이 설정되어 있는 포트를 Access Port(액세스 포트)라고 부름

트렁크가 적용된 포트로 VLAN 1,VLAN 2가 지나가는 모습

  • 스위치 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 단말
  • 가장 먼저 보았던 그림(<10개의 VLAN이 존재하는 네트워크>)에 Trunk를 적용하면 아래와 같은 그림이 나옴
  • 이제 VLAN 10과 VLAN 20은 하나의 트렁크 포트를 통해서 라우터와 통신할 수 있음
  • VLAN 10은 라우터에 경유하여 VLAN 20과 통신할 수 있음(Inter-VLAN Routing)

라우터와 스위치에 Trunk가 적용된 모습

하나의 포트에 여러 VLAN에 소속된 프레임이 지나간다면 프레임이 포트를 들어갔다가 나올 때 어떻게 구별할 수 있을까요?

어떤 프레임이 VLAN 10인지 VLAN 20인지 말입니다.

IP를 보면 알 수야 있겠지만 Layer 2 계층의 데이터인 이더넷 프레임이기에 IP 헤더까진 보지 못 합니다.
그리하여 이더넷 프레임에 태그를 삽입하여 트렁크 포트를 지나는 이더넷 프레임의 
VLAN ID(VLAN 번호)를 구별할 수 있도록 하기 위한 방안이 있으니 바로 IEEE 802.1Q입니다.


6. IEEE 802.1Q

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

- 출처 : 위키백과 - 
  • IEEE 802.1Q는 VLAN을 지원하는 네트워크 표준으로 트렁킹 프로토콜 중 하나
  • 스위치와 스위치 사이의 트렁크 포트에서 VLAN ID(VLAN 번호) 정보를 전달하기 위한 방법
  • 트렁크로 설정된 포트로 이더넷 프레임이 진입할 때 이 프레임의 VLAN ID이 기록된 태그를 이더넷 프레임의 내부에 끼워넣음
  • 이더넷 프레임을 확장하는 방식
  • 그리하여 건너편 스위치에서 이 프레임을 받을 때 이더넷 프레임에 기록된 태그를 보고 VLAN ID를 확인

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

  • 위의 그림을 보시면 802.1Q Header가 삽입된 것을 확인하실 수 있음
  • 802.1Q Header를 자세히 보시면 VLAN ID에 해당하는 VID가 존재
  • IEEE 802.1Q가 적용된 포트, 다시 말해 다양한 VLAN Tag(VLAN ID)를 지닌 이더넷 프레임이 지나갈 수 있는 포트를 트렁크 포트
  • 스위치는 트렁크 포트를 통해 건너온 이더넷프레임을 확인할 때 VID 부분을 보고 이 이더넷 프레임이 소속된 VLAN을 알 수 있게 됨

Trunk 802.1Q가 적용된 트렁크 포트(출처 : https://networklessons.com/)

  • 802.1Q를 사용하여 통신하는 각각의 VLAN과 스위치를 그림으로 표현하면 위와 같음
  • 스위치와 스위치 간의 이더넷 프레임 전달 시 VID를 헤더에 끼워넣고 전달하여 VLAN 10, VLAN 20, VLAN 30을 구별
  • IEEE 802.1Q는 하나의 링크를 통해 다수의 VLAN이 통신할 때 사용되는 일종의 깃발임

 

 

그렇다면 하나의 VLAN만이 적용된 액세스 포트(Access Port)에서 이더넷 프레임이 이동할 때 VLAN Tag(VLAN ID)는 어떻게 변화할까요? 트렁크 포트의 경우처럼 VLAN Tag(VLAN ID)를 붙일까요?

예를 들어 VLAN 10이 설정된 액세스 포트라면 802.1Q Header에 'VLAN ID 10' 를 주입하는 것일까요?

VLAN 예시

  • 위 그림을 보시면 두 개의 스위치를 두고 양쪽 끝단에 PC 2대가 있음
  • 그리고 Subnet Mask는 동일하지만 각각의 스위치는 액세스 포트에 설정된 VLAN이 다름
  • 왼쪽의 스위치는 두 개의 액세스 포트에 VLAN 10을, 오른쪽의 스위치는 두 개의 액세스 포트에 VLAN 20을 설정
  • 이 상태에서 양쪽 끝단의 PC는 서로 ICMP Check(Ping)를 할 수 있을까요?
    • 양쪽 끝단의 PC는 서로 ICMP Check(Ping)를 할 수 있음
    • VLAN을 사용하는 이유는 브로드 캐스트 도메인을 나누어 스위치와 단말에 전달되는 부하를 줄이는 것
    • 그리고 스위치는 액세스 포트에 설정된 VLAN을 보고 동일한 VLAN에 한해 브로드 캐스트를 전달
    • 이를 통해 동일한 VLAN 소속의 단말들이 서로 통신

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

  • 결론을 먼저 말씀드리면 액세스 포트는 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)를 장착하는 점에서 오는 특이점

7. 정보 출처

https://aws-hyoh.tistory.com/75

 

VLAN 쉽게 이해하기 #1

여러분은 허브(Hub)란 단어를 들으면 무엇을 떠올리시나요? 전 아무래도 네트워크 계통에서 일을 하다 보니 다수의 컴퓨터를 연결시켜주는 이더넷 허브(Ethernet Hub)를 떠올립니다. 이더넷 허브는

aws-hyoh.tistory.com

https://aws-hyoh.tistory.com/120

 

VLAN 쉽게 이해하기 #2

지난번에 이어 계속해서 VLAN에 대해 이야기해보겠습니다. VLAN 쉽게 이해하기 #1에서는 VLAN을 사용하는 이유에 대해 집중적으로 다루었습니다. 이번엔 좀 다른 이야기를 해보려고 하는데요. 아래

aws-hyoh.tistory.com

https://aws-hyoh.tistory.com/132

 

VLAN 쉽게 이해하기 #3

이 글은 오리뎅이님의 에 있는 글인 (https://blog.naver.com/goduck2/220218907545)를 다수 참고하였음을 미리 알려드립니다. 지난 문서에서 IEEE 802.1Q에 대해 다루었는데요. 스위치와 스위치 사이에서 하나

aws-hyoh.tistory.com

반응형

댓글