VLAN

“A virtual LAN (VLAN)이란 *논리적으로 같은 *브로드캐스트 도메인에 속한 네트워크 장비들의 모임이다.
원문 : http://www.9tut.com/virtual-local-area-network-vlan-tutorial

논리적으로
일상에서 쓰는 의미와는 다르다. 이것은 '공간으로 따질지, 권한(privilege)으로 따질지'의 개념이다. 예를 들어, 오프라인 강의를 수강하는 학생은 오직 강의실에서만 수업을 들을 수가 있다(물리적). 하지만 온라인 강의를 수강하는 학생은 '수강 신청만 했다면' 어디에 있건 수업을 들을 수가 있다(논리적). 이 때 온라인 강의를 수강하는 학생들은 '논리적으로 같은 도메인'에 속했다고 할 수 있다.

브로드캐스트 도메인
대학교 오프라인 강의가 시작했다. 교수님은 학생들이 왔는지 알아보기 위해서 한 명씩 출석을 부른다. 모두에게 전달하지만 한 명만이 응답을 한다. 이 때 강의실은 브로드캐스트 도메인이 된다. 마찬가지로 L2 스위치는 장비의 위치를 알기위해 브로드캐스트 도메인에 포함된 각 호스트로 신호를 날린다(ARP). * 보다 정확한 정의는 Switching에서 다루기로 하자.

다시 정리하면 VLAN을 이용하면 논리적으로 도메인을 분리할 수 있다. 이를 통해 여러 장점들을 누릴 수 있다. 예를 들면 물리적 도메인에 맞추기 위해 회사의 각 부서들이 스위치 때문에 각자의 방에 꽁꽁 묶여있을 필요가 없다.

조금 더 기술적으로

*VLAN은 기존에는 라우터가 하던 *네트워크 세그먼테이션 작업(Network segmentation)을 할 수 있다. 이 결과 2계층 위에서 다수의 3계층 네트워크를 만드는 것을 돕는다. 만약 네트워크를 잘 분리하면 DHCP 서버가 없이도 *링크 로컬 주소를 얻거나, 다른 DHCP 서버를 찾거나, DNS 서버를 이용할 수 있다.

다만 이러한 네트워크의 분리는 서브넷을 만드는 것과는 유사하지만 다르다. VLAN은 2계층을 만들고(construct) 서브넷은 3계층을 만든다. 때로 같은 VLAN 하나에 서브넷 하나가 대응될 수도 있지만(1:1로) 여러 서브넷을 포함될 수도 있는 것이다.

클라우드 컴퓨팅 VLAN에서 IP 주소, MAC 주소는 최종 사용자가 관리할 수 있는 리소스이다. 보안 문제를 피하기 위해서는 클라우드 기반 가상 머신을 인터넷 보다는 VLAN에 위치시키는 것이 선호된다. (인용 : 위키백과)

세그먼테이션(Segmentation)
세그먼테이션이란 네트워크를 분리해서 서브넷을 만드는 과정, subnett-ing의 의미로 각각의 서브넷은 세그먼트(segment)가 된다. subnetting보다 분리의 의미를 조금 더 강조한 느낌이 드는 용어이다. 네트워크를 분리함으로써 얻는 장점이 많다. 일단 서브넷 단위로 브로드캐스트가 정해지므로 혼잡도의 크기가 감소한다. 또 그 브로드캐스트가 서브넷 내부에서만 일어나므로 보안성이 강화된다. 호스트나 서브넷(로컬)에 문제가 생겨도 다른 서브넷에 영향을 줄 가능성을 제한한다. 방문자들의 특정 네트워크 접속을 격리(*segregation)할 수 있다.

격리(segregation)
세그먼테이션에서 말하는 격리란 VLAN만으로는 되지 않고, VLAN과 방화벽의 조합으로 구현된다. 그러나 VLAN은 데이터의 정보를 사람처럼 해석할 수 없으므로 완벽한 격리를 하기 위해서는 '이상적인' SDN이 필요할 것이다.

링크 로컬 주소
서브넷(네트워크 세그먼트) 아래에서만 통신이 가능한 네트워크 주소. 이 주소들은 보통 자동으로 할당하도록 하는데 각 주소가 고유하다는 보장이 없어서 이 주소로는 라우터가 패킷을 전달하지 않는다. 이런 단점이 있어서 호스트는 DHCP 서버를 우선적으로 찾는다.

구조

어떻게 VLAN은 패킷을 구분하는 걸까? IEEE 802.1Q(VLAN을 지원하는 네트워크 표준)를 통해 확인해보자.

frame 출처 : 위키백과

VLAN ID를 통해 패킷 간에 논리적인 구분을 지어주고 식별이 가능해진다. ID는 16bit로 이루어진 TPID 필드 안에 담긴다. 정확히는 TPID 안에 VID(VLAN Identifier) 필드인데, 12bit 필드로써 4094개(첫 비트와 마지막 비트는 제외)의 구분이 가능하다. 하지만 VLAN 하나에 여러 서브넷이 있을 수 있음을 기억하자. 이것을 고려하면 이론상 최대 1600만 개의 구분이 가능하다.

일반적인 방법인 접근 모드(access mode)는 태깅tagging과 언태깅un-tagging의 과정을 거친다. tagging이란 출발지 포트로부터 프레임이 나가기 전에 ID를 붙이는 과정이며, untagging은 목적지 포트를 나가기 전 태그를 떼는 과정이다. 예를 들어, 스위치 외부에서 포트로 프레임이 들어오면 스위치는 그 인터페이스(포트)에 해당하는 VLAN ID를 거기에 붙인다(tagging). 그리고 프레임이 나가려고 할 때 프레임에 붙은 VLAN ID와 출력 인터페이스에 설정된 VLAN ID를 비교한다. 이 때 VLAN 정보가 동일하다면 프레임은 태그를 떼어진 채로 포트 밖으로 보내진다. (다르다면? 프레임은 나가지 못한다.)

여기서 문제가 생긴다. 스위치 간에 태그를 뗀 채로 프레임을 주고 받는다면 1:1로 포트를 연결하지 않는 이상 목적지를 지정할 수가 없어진다. 그래서 스위치 간에 VLAN 설정이 다른 두 포트가 연결되어 있어도 알 수가 없어진다. 이런 문제를 해결하기 위해서 트렁크 포트가 존재한다. 이 포트는 프레임이 출입할 때 태그를 떼지 않는다. 단, 트렁크포트도 해당 스위치가 가진 VLAN 테이블에 존재하는 VLAN 정보만을 취급한다. 이런 탓에 여러 스위치가 연결된 경우 중간에 한 스위치에만 특정 VLAN 정보가 없어도 프레임 전송에 차질이 생길 수 있다.

그외 트렁크 포트 간 전송을 위해서는 프레임 캡슐화(encapsulation) 설정의 동기화 역시 필요하다.


Private VLAN

PVLAN은 포트 간에 통신에 제약을 거는 형태의 VLAN이다. 어떤 제약이냐하면 각각의 포트는 오직 "uplink"를 통해서만 통신이 가능하다는 것이다. 여기서 uplink란 PVLAN 스위치에 연결된 보다 상위 계층(layer)의 장비로, 여기에 연결된 라우터라고 할 수 있다.

조금 더 세부적인 설명을 위해 VLAN'rfc55' 문서의 한 부분을 발췌했다.

                                     -----------
                                     |    R    |
                                     -----------
                                          |
                                          |
                                          |
                 ----------------------------------------
                 |                        p1            |
                 |                                      |
            =====| t1                                   |
                 |                switch                |
                 |                                      |
                 |                                      |
                 |i1         i2          c1          c2 |
                 ----------------------------------------
                  |          |           |           |
                  |          |           |           |
                  |          |           |           |
                  A          B           C           D

                 A, B - Isolated devices
                 C, D - Community devices
                 R - Router (or other L4-L7 device)
                 i1, i2 - Isolated switch ports
                 c1, c2 - Community switch ports
                 p1 - Promiscuous switch port
                 t1 - Inter-switch link port (a VLAN-aware port)

             Figure 1. Private VLAN classification of switch ports

             quotated from https://tools.ietf.org/html/rfc5517

For example, with reference to Figure 1, a router R connected to the promiscuous port can have Layer 2 communication with a device A connected to an isolated port and also with a device C connected to a community port. Devices C and D can also have Layer 2 communication between themselves since they are part of the same community VLAN. However, devices A and B cannot communicate at Layer 2 due to the special port segregation property of the isolated VLAN. Also, devices A and C cannot communicate at Layer 2 since they belong to different secondary VLANs.

quotated from https://tools.ietf.org/html/rfc5517

  • i1, i2는 고립된 포트라서 promiscous 포트인 p1과만 대화가 가능하다.
  • c1, c2는 커뮤니케이션 포트라서 서로 대화가 가능하다. 즉, c1, c2, p1는 서로 대화가 가능하다.
  • Promiscuous 포트는 '난잡한'이라는 뜻처럼 모든 포트와 대화가 가능하다. * 그외 노드end point와 대화가 필요한 게이트웨이, DHCP 서버, 그리고 신뢰성이 있는 장비(trusted devices)들 모두 가능하다.

pvlan

< Figure p. https://en.wikipedia.org/wiki/Private_VLAN >
* 그림 상의 Primary VLAN은 기본 VLAN을 뜻한다. 이것은 Private VLAN이 기본 VLAN의 위(on)로 연결되어 프레임을 전달 받고있다는 의미일 것이다(또는 단순히 Private VLAN의 오타일 수도 있다).

특징

  • 같은 IP subnet 범위 : 서로 다른 포트 간에 같은 IP subnet 범위를 가진다.
  • 포트 간 통신 제한 : 위의 설명처럼 포트 간 통신에 제약을 설정할 수 있다.

Use cases

  • 네트워크를 분리할 때 IP 주소를 바꾸지 않아도 되니 간편하다.
  • 포트 간 통신에 제약을 줄 수 있으므로 분리된 환경을 필요로 하는 곳에 경제적으로나 설계상으로나 유용하다. 즉, 보다 적은 개수의 스위치로 여러 네트워크 장비를 연결을 할 수 있다. 예로는 호텔이나 아파트를 생각해볼 수 있겠다.

References

https://tools.ietf.org/html/rfc5517
http://www.9tut.com/virtual-local-area-network-vlan-tutorial
https://ko.wikipedia.org/wiki/%EA%B0%80%EC%83%81_%EB%9E%9C
https://en.wikipedia.org/wiki/Virtual_LAN
https://en.wikipedia.org/wiki/Private_VLAN
http://4network.tistory.com/entry/vlan

results matching ""

    No results matching ""