VLANVirtual Local Area Network
Ethernet 이 사실상 LAN (Local Area Network) 표준 기술로 사용 중에 있다.
Ethernet Packet 을 여러 metric로 분류 할 수 있지만, 맨 앞에 있는 Layer 2 주소 , 즉 6 byte destination 주소
유형으로 분류 하면 3가지로 나눠 볼수 있다.
unicast
- 고유한 주소 값이다.
- 보통 컴퓨터 NIC 1개를 고유하게 표현하는 주소
- 6 byte중 3byte OUI (업체 ID)와 나머지 3byte 는 업체에서 붙여준 숫자
ex) MAC address (6 bytes) = OUI (3 bytes) + serial number(3 bytes )
00-00-0C = Cisco OUI
00-00-F0 = Samsung OUI
Multicast/Broadcast
Ethernet packet 에서 preamble(7bytes) 와 SFD 라는 프레임 구분 시작 기호 (10101011) 직 후에, “1” 이라는 값이 보이면
이는 모두 Multicast 또는 Broadcast이다. 이들은 모두 스위치에 들어 오면 여러 포트로 퍼지는 특성을 가지고 있다.
물론, Multicast 는 해당 주소에 Join 된 포트 일부로만 퍼지는 차이가 있다.
Multicast만 가지고도 아마 아주 ~ 긴 이야기를 할수 있지만 여기까지 하고,
퍼지긴 하는데, 무슨 기준으로 퍼지는가 ?.. 이때 나오는 것이 VLAN 이다.
맞다. VLAN 기준으로 packet이 퍼지게 된다.
그래서, VLAN 을 Broadcast Domain 이라고도 부른다.
VLAN = Broadcast Domain
잠깐, unicast, multicast, broadcast 라는 이야기가 나왔으니,
NIC에서 이런 패킷을 받으면 어떻게 동작 하는지 잠깐만 설명한다.
먼저, unicast가 들어 오면, NIC 주소와 match 되는 unicast라면 바로 CPU 방향으로 packet이 전달되지만,
match 되지 않으면, NIC에서 drop 이 된다. 이런 동작으로 불필요한 CPU로 packet이 유입되는 것을 막는다.
다만, wireshark 이라던지, packet probe 하는 application을 실행하게 되면, 실행 과정에서 NIC을
promiscous mode로 전환하게 된다. 이때 NIC 보고, match 하지 않는 unicast도 CPU로 올라오도록
NIC 환경을 수정하게 된다.
multicast 또한, NIC에 Join 되지 않은 address가 들어 오면 drop 되지만, promiscous 라면, 이 것도
CPU로 올라오게 된다.
broadcast는 이런거 없이, 무조건 CPU로 들어 온다.
802.1Q VLAN
802.1P VLAN
VLAN 개념은 스위치에서는 필수적으로 사용되는 개념이다. 굳이, 사용자 packet 내에 VLAN 표시가 없더라도,
스위치에서 packet을 처음 수신하는 포트에 설정 환경에 따라, 내부적으로 어떤 VLAN으로 취급 할지를 결정해둔다.
스위치 내부 동작을 모두 수행하고, 최종 내보낼 포트가 정해지면, 이때 또한 포트의 설정 환경에 따라,
packet에 VLAN 표시를 할지 말지를 결정한다.
일반, Ethernet packet 내에 4byte 공간에 1~4093 까지 숫자로 VLAN을 표시 할수 있는데, 이때 이런 packet을
802.1Q VLAN 이라고 한다. 1Q VLAN 이라고 표시 하기 위해 0x8100 이란 값이 MAC 주소 바로 뒤에 붙는다.
여기서 VLAN ID 가 0 인 packet을 1P VLAN 이라고 하고, 이것은 보통 VLAN Tag가 없는 Untag packet으로
취급하지만, Priority 값 만을 전달 할 때 사용한다.
Layer2 – Switching
MAC 주소만 보고 어떻게 스위칭이 되는지 알아 보자.
이때 사용되는 대표적인 테이블이 2개 다.
VLAN 테이블과, MAC 테이블이다. (MAC 테이블을 표준문서에는 FDB 테이블이라고 부른다.)
FDB = Filtering Database 정도로 이해하면 되겠다.
어떤 MAC 주소가, 어느 포트로 부터 유입되었는지를 기록 하는 테이블이다.
보통 주소를 알게 된 순간 부터, 300초 동안 보관한다.
좌측 PC 에서 VLAN Tag가 없는 packet을 발송 했다.
스위치는 이 packet의 source MAC 주소를 보관 한다. ge0 에서 들어 왔고, VLAN 1이며
unicast 주소는 0x2 라고 말이다.
일단, destination 주소 0x1 이 없다면, 이때 unicast 도 마치 broadcast 처럼 퍼지게 된다.
vlan 1 멤버를 보니, 2개이고, source 인 ge0 말고 ge1 이 멤버다.
그럼, ge1으로 일단 보내는데,
어라~? ge1은 tagged로 설정되어 있다.
그럼, 이때는 원래 source에서 왔던 packet에 4byte 를 MAC 주소 다음에 붙여 준다.
0x8100 + VLAN ID (1)과 같은 형태로, 4byte를 붙여 준다.
Layer3 – Routing
스위칭 보다는 조금 복잡하다.
라우팅 (Routing) 에서는 추가로 2개 테이블이 사용된다. Routing 테이블 (Forwarding 테이블 이라고도 함) 과
ARP 테이블이다. ARP = Address Resolution Protocol를 줄인 말이다.
다시, 좌측 PC에서 packet이 발송 되었다.
좌측 PC에서 packet이 최종 스위치로 보낼 때도, 사실 숨겨진 과정이 있다.
Destination IP로 보낼려면, 스위치 쪽으로 보내라는 라우팅 테이블이 PC에도 존재하고, (적어도 default라도)
PC는 destination MAC address로 스위치 MAC 을 붙여서 보냈을 것이다.
일단, 스위치는 이 packet을 받으면, destination MAC address가 자기 꺼라, 라우팅 처리가 필요한 것이라는 것을 안다.
(* 라우팅이 아니라면, 아마 주변 장비와 주고 받는 Protocol 일수도 있고, 어딘가에서 보낸 ping 메세지 일수도 있다.)
다시, destination IP를 보니, 스위치 입장에서도, VLAN 2에 있는 IP 라는 것을 알게 된다.
그럼, source MAC address는 자기 자신을 것을 붙이고, destination MAC address는 ARP 테이블을 통해서 찾아서 붙인다.
그리고, 최종 송신 포트는 Tagged로 설정되어 있다 (Trunk). 따라서, 4 bytes VLAN Tag가 붙어 있는 packet을 만들어
최종 보내게 된다.
SVL – Shared VLAN LearningIVL – Independent VLAN Learning
MAC 테이블을 어떻게 운영하는가에 따라, SVL과 IVL 두가지 종류가 있다.
VLAN 별로 따로 MAC 테이블을 운영하는가 ?, 아니면, MAC 테이블 내에 VLAN 개념을 없애는가 이다.
이 개념을 응용하면, Broadcast Domain을 나누면서 , 즉 packet이 퍼질때는 VLAN 개념을 따라 퍼지도록 하면서,
Unicast packet은 VLAN 개념 없이 Lookup 하고, 보낼 수 있는 형태로 통신망을 꾸밀 수가 있다.
물론, SVL로 하면 더 많은 MAC 주소를 보관할 수 있는 장점도 있다.
스위치는 보통 IVL 을 기본으로 사용한다.
Access / Trunk / Hybrid
스위치를 설정하다 보면, 위와 같이 3가지 종류 모드를 만나게 된다.
스위치 제조사에 따라서, 조금은 다른 용어를 쓸 수 있지만, 기본 개념은
VLAN tagged가 없는, tagged만 존재하는, untagged와 tagged가 공존하는 모드를 정한다.
용어 자체 보다, 개념에 맞춰서 찾아 보시길 바란다.
그런데, 어떤 개념이든지 스위치 내부로 들어와, 스위치 Chip, Silicon 내부에서는 모든 packet은
VLAN 개념이 있는 packet으로 취급하고 처리 한다라고 보는게 좋을 것이다.
GVRP/VTP
스위치가 많이 배치되어 있는 네트워크에서, 신규 VLAN을 새로 정의 하게 되면,
보통은 각 스위치에 이런 새로운 VLAN과 관련된 설정을 모두 적용해줘야, End to End로 신규
Broadcast Domain이 동작하게 된다.
각 스위치에 모두 들어가, 조심스럽게 사람이 VLAN 값을 입력할 수도 있지만, 이를 자동으로 설정해주는
프로토콜이 존재한다. 표준 프로토콜은 GVRP 이다. C사 경우 VTP 라는 독자 프로토콜를 사용한다.
다양한 VLAN
Broadcast Domain을 VLAN ID 로 나누는 것 외에, 다른 방법으로도 VLAN을 나눈다.
Port 기반, Protocoal 기반, MAC 기반, Subnet 기반으로도 VLAN을 나누기도 한다.
VLAN 확장
Q-in-Q
VLAN 값을 표현할 수 있는 공간은 12bit 밖에 되지 않는다.
고작해야, 4094개 구분 가능하다. 이를 극복하는 방안으로, Tag 1개를 더 붙이는 방식이 있다.
Double Tagged 방식은, 또한 Tunneling 기법으로도 활용된다. IP data에 가깝게 붙어 있는 Tagged는
Customer Tag가 되고, MAC address 다음에 붙은 Tagged는 Provider Tag로 활용된다.
Provider Tag는 가입자 단위 또는 프로젝트 단위로 Broadcast Domain을 나누고, 그 Domain 에 Packet을
보낼 때는 Provider Tag를 모두 삭제 하고 보낸다. 원거리 간에도 마치 같은 Broadcast Domain으로 만들 수 있다.
VLAN 은 계속 사용된다
VLAN 경우, Ethernet packet을 사용하는 곳에서는 모두 사용되는 개념이다.
조그만한 사무실 네트워크 뿐 아니라, 거대한 데이터 센터까지 광범위 하게 사용된다.
GEO redundancy 개념, 가상화 개념, Layer2 Tunnel 개념이 적용된 곳에서는 VLAN 외에
VXLAN도 같이 사용된다.