만쥬의 개발일기
article thumbnail

vLan에 대해 설명하기 전에 우선 네트워크의 다음 몇 가지 기본 지식이 있어야합니다.

도메인 지식 정리

이더넷 (Ethernet)

이더넷(Ethernet)이란?
이더넷은 컴퓨터 네트워크 기술의 하나로, 일반적으로 LAN에서 데이터를 주고 받기 위해 가장 많이 활용되는 기술 규격입니다.

 

LAN은 근거리 네트워크를 의미하고,이는 “집과 같은 소규모 네트워크부터 사무실, 회사와 같은 중규모 이상의 네트워크에 이르기까지 동일한 IP 대역과 동일한 Subnet Mask를 사용하며, Address Resolutuon Protocol(ARP)가 닿는 모든 범위”를 의미합니다.

 

이더넷을 더욱 쉽게 정의하면, “같은 지역의 네트워크에 있는 PC간의 데이터를 주고 받기 위해 사용하는 기술 규격” 이라고 할 수 있습니다.

 

스위치(Switch)

위 그림처럼 스위치는 같은 네트워크에 있는 PC들간의 통신을 위해 사용합니다.

 

기존에는 같은 네트워크에 있어도 케이블로 서로를 연결해줘야 했다면, 스위치는 스위치에 연결된 같은 네트워크 안의 컴퓨터끼리 데이터를 주고 받을 수 있게 해줍니다.

스위치는 연결된 PC들의 MAC주소를 기록하고 목적지의 MAC 주소를 통해 원하는 PC로 데이터 통신이 가능하게 합니다.

이게 불가능해 연결된 모든 PC에 데이터를 동일하게 보내야 하는게 허브입니다.

허브<스위치 라고 할 수 있겠네요.

 

인터넷(Internet)

이더넷이 같은 네트워크간의 통신을 위한 통신규약이라면, 인터넷은 복수의 네트워크를 연결한 광역 네트워크를 뜻하고 전 세계의 컴퓨터를 연결한 거대 통신망 집합체를 뜻합니다.

서로 다른 네트워크간의 통신을 위해서는 라우터라는 네트워크가 장비가 필요하고, 가정에서 사용하는 공유기가 라우터의 역할을 해 우리가 가정에서 인터넷 사용이 가능한 것입니다.

그리고 이더넷에서 목적지를 MAC주소로 구분했다면, 인터넷에서는 IP와 Port를 통해 목적지를 구분합니다.

인터넷과 라우터에 대해서는 추후 다시 자세히 다뤄보겠습니다.

 

VLan이란?

본론으로 돌아가서, VLAN은 VPN(가상 사설망)이 아닌 가상 근거리 통신망입니다.

그리고 허브와 스위치의 가장 큰 차이점이라고 할 수 있습니다.

이전에 말했던 ARP는 각 컴퓨터가 갖는 IP Address에 매칭되는 MAC Address를 알아내기 위한 Protocol입니다. 그리고 ARP request는 연결된 네트워크 장비와 컴퓨터에 모두 전달됩니다.

이렇게 송신자가 전달하는 메시지를 연결된 모든 컴퓨터가 전달받는 방식을 브로드캐스트(Broadcast)라고 합니다.

 

그리고 브로드캐스트를 전달할 때 목적지 IP의 끝자리를 .255로 설정해서 프로토콜을 보냅니다. ex)10.10.10.x/24 의 경우 10.10.10.255)

네트워크 장비에 10대의 컴퓨터가 있다면, MAC Address를 알기 위해 1번의 Broadcast당 10번의 ARP Request를 발생시킬 것이고, 100대가 있다면 100번의 ARP req를 발생시킬 것입니다.

 

연결된 컴퓨터가 많을수록 Broadcast당 ARP의 양이 많아지게되고, 네트워크의 대역폭은 가득 차 데이터 전달 속도도 눈에 띄게 느려질 것입니다.

 

여러 개의 IP 대역을 사용하고 싶다면❓

만약 VLAN 없이 Subnet Mask가 다른 여러 개의 IP 대역을 사용하고 싶다면 위 그림처럼 각각의 IP 대역을 사용하는 라우터(공유기)를 설치해야 합니다. 그렇게 되면 비용도 많이 들고, 새로운 IP 대역을 추가할 때마다 라우터도 같이 증가하기 때문에 번거로운 작업이 됩니다.

 

이를 해결하기 위해 나온 솔루션이 바로 VLAN입니다.

 

VLAN은 가상 작업 그룹을 구현하기 위해 LAN 장치를 논리적으로(물리적으로 아님) 세그먼트로 나누는 새로운 데이터 교환 기술입니다. 또한 VLAN을 지원하는 네트워크 장비는 VLAN을 다수 생성 가능하고, 이 VLAN을 통해 브로드캐스트 도메인을 나누는 것입니다.

 

이렇게 나누어진 브로드캐스트 도메인은, VLAN이 설정된 포트에 연결된 단말의 IP 대역만이 이더넷 통신이 가능하며 다른 VLAN과 통신하기 위해서는 Layer 3 이상의 스위치 혹은 라우터를 통해야합니다.

 

위 그림을 하나의 라우터, 하나의 스위치를 사용하고 VLAN을 적용해서 구현한다면 다음과 같습니다.

위 그림에서 스위치는 포트에 설정된 VLAN을 보고 트래픽 전달 여부를 판단합니다. 따라서 기존에 PC1 혹은 라우터의 F0/0에서 전달된 브로드캐스트가 PC2와 PC3에도 전달이 되었다면, 위 그림에서는 VLAN 덕분에 PC2와 PC3는 망분리가 되었기에 브로드캐스트가 전달되지 않습니다.

 

VLAN은 이처럼 브로드캐스트 도메인 분할을 하는 역할을 하게됩니다.

 

ACCESS Port

스위치 포트에 하나의 VLAN을 할당하여 해당 VLAN끼리만 트래픽이 흐를 수 있도록 지정하고, 지정된 PORT를 Access Port라고 합니다.

위의 예시가 Access Port로 구현된 모습입니다.

 

Trunk(Tagging) 

이번에는 다음 그림처럼 VLAN이 많이 필요할 때의 경우를 보겠습니다.

만약 VLAN이 많이 필요하다면, 라우터와 스위치 사이에 VLAN이 필요할 때마다 라우터와 스위치 사이에 포트를 추가하고 VLAN을 부여해야합니다.

그러나 이는 매우 비효율적이고, 포트도 많이 필요합니다.

그래서 나오게 된 해결책이 바로 Trunk입니다.

 

트렁크(Trunk)는 스위치와 스위치의 프레임(Layer2에서 사용하는 데이터 단위인 이더넷 프레임) 전달 시에 하나의 포트에 다수의 VLAN이 지나갈 수 있도록 하는 링크이다.

트렁크의 정의는 위와 같습니다.

그리고 트렁크 포트는 , 하나의 포트로 수에 제한 없이 모든 VLAN tag가 달린 패킷을 전송할 수 있도록 하기 위해 설정된 포트입니다. 이는 곧 나눠진 VLAN 네트워크의 트래픽을 하나의 포트로 전송하게 해줍니다.

 

대신 이를 위해서는 포트가 아닌 데이터에 VLAN을 표시해서 전달해야합니다.

이를 Trunking Encapsulation이라고 합니다.

왼쪽 그림처럼 된 일반 데이터에, 오른쪽 그림처럼 VLAN tag를 달아주고 트렁크 포트로 전달해줍니다. 그리고 VLAN 정보를 추가하기 위해 사용하는 프로토콜로 802.1QISL이 있습니다.

 

기존에 보았던 아키텍쳐에 트렁크포트를 추가하면 위와 같은 모습이 됩니다.

이제 케이블도 , 포트도 한개만 준비가 되어도 VLAN 10과 VLAN 20은 하나의 트렁크 포트를 통해 라우터와 통신할 수 있고, VLAN 10은 라우터에 경유하여 VLAN 20과 통신할 수 있습니다.

이를 inter-vlan routing이라고 합니다.

 

ACCESS 포트에 관한 재미있는 사실

위와 같은 경우는 두 개의 스위치가 있고, 각각 양 끝 Access 포트에 설정된 VLAN이 다릅니다. 통신이 될까요?

같은 서브넷 마스크이지만 VLAN이 다르기 때문에 switch1의 e1에서 switch2의 e0으로 가는 통신이 안되지 않을까요?

 

결론은 통신이 가능합니다.

 

Access 포트의 정의는 다음과 같습니다.

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

 

즉, Access Port는 VLAN tag와 전혀 관련이 없습니다. 트렁크 포트를 통해 나가는 이더넷 프레임일 경우에만 VLAN tag가 적용이 되는 것입니다. Access Port가 판단하는 것은 오로지 포트 자신에게 설정된 VLAN입니다. 그리고 패킷은 스위치에 들어갈 때 패킷에 tag가 붙고, 스위치에서 나갈 때 패킷의 tag가 사라지게 됩니다.

 

위 예시에서 PC1이 ARP Request를 PC2로 전달하는 과정은 다음과 같습니다.

  1. PC1이 PC2와 통신하기 위해 10.10.10.2/24에 대한 MAC 주소를 알고자 ARP Request를 날립니다.
  2. ARP Request는 VLAN tag 10이 달린 채 switch1의 e0에 도착합니다.
  3. 이후 동일한 VLAN tag 10이 설정된 e1을 통해 내보내고, 나가는 과정에서 트렁크 포트가 아니기 때문에 tag는 소실됩니다.
  4. e1으로 나간 Request는 Switch2의 e0으로 진입하면서 VLAN tag 20이 붙게 됩니다.
  5. 이후 Switch2는 동일한 VLAN 20인 e1을 통해 Request를 전달하게 됩니다.
  6. Access port로 나갔기 때문에 tag는 소실되었고, Request는 PC2에 정상적으로 도달합니다.

 

반대의 경우도 동일합니다.

 

reference

profile

만쥬의 개발일기

@KangManJoo

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!