VLAN
Vlan(virtual Lan, 가상 LAN)이란 논리적으로 분할된 스위치를 말한다.
VLAN을 사용하는 이유
VLAN을 사용하는 주된 이유는 접속된 장비들의 성능 향상 및 보안성 증대에 있다.
pc, 서버를 비롯하여 라우터와 같은 통신 장비들도 ARP 등을 위하여 브로드캐스트 트래픽을 많이 사용한다.
PC1이 PC2의 MAC 주소를 알아내기 위하여 브로드캐스트 프레임을 전송하면 SW1은 트랜스패런트 브리징이 동작하여 이를 모든 포트로 플러딩(flooding)시킨다. 결과적으로 PC3은 불필요한 브로드캐스트 프레임을 수신한다. 장비들은 브로드캐스트 프레임을 수신하면 일단 내용을 확인해야 하며, 확인 후 자신과 상관이 없는 내용이면 무시한다.
스위치에 접속된 장비가 많으면 수많은 브로드캐스트 프레임을 수신하고, 이를 확인하기 위하여 CPU를 낭비하게 된다. 특히, 바이러스 등으로 인하여 PC들이 엄청 많은 브로드캐스트 트래픽을 전송하면 다른 PC들의 인터넷 접속 속도에 영향을 미칠뿐만 아니라, 통신과 상관없는 편집이나 표계산 등의 작업 속도도 느려지게 된다.
다음 그림과 같이 스위치에 VLAN을 설정하여 PC1과 PC2가 접속된 포트는 VLAN10에 소속시키고 나머지 PC들은 VLAN20에 소속시키는 경우를 생각해보자. 트랜스패런트 브리징 프로토콜에서 브로드캐스트는 동일한 VLAN에 소속된 포트로만 플러딩된다.
즉, 브로드 캐스트 도메인의 크기가 줄어들어 각 장비들이 불필요한 프레임을 처리해야하는 일이 감소된다.
또한 보안성도 제고할 수 있다.
VLAN 설정하기
Would you like to terminate autoinstall? [yes]: 와 같은 설정이 뜰시에 no를 하면 오류가 발생한다. 조심해야한다.
sw1#show cdp neighbors
Device ID Local Intrfce Holdtme Capability Platform Port ID
r2 Fas 1/2 6 R S I 3660 Fas 0/0
r3 Fas 1/3 8 R S I 3660 Fas 0/0
r1 Fas 1/1 8 R S I 3660 Fas 0/0
VLAN 번호
VLAN은 번호(ID)로 구분한다. 사용 가능한 VLAN 번호는 1-4094 사이이다. VLAN 번호가 1-1005사이인 것은 일반(nomal) VLAN이라고 한다. 이중에서 1002-1005는 토큰링과 FDDI라는 프로토콜용으로 사용된다. 요즈음은 토큰링과 FDDI 프로토콜을 사용하지 않으므로 이 VLAN 번호 역시 실제로는 사용되지 않는다. 이더넷에서 사용할 수 있는 일반 VLAN의 번호는 1-1001까지이다.
기본적으로 모든 스위치의 포트는 VLAN1에 소속되어 이싿. 현재 설정된 VLAN 정보를 확인하려면 #show vlan-switch brief 명령어를 사용한다.
카탈리스트 스위치에서 VLAN 설정을 확인하는 명령어는 show vlan brief 이다.
VLAN 번호가 1006-4094인 것을 확장(extended) VLAN이라고 한다. 실제 사용 가능한 VLAN의 수량은 스위치 모델에 따라 다르다.
VLAN 설정하기
sw1(config)#vlan 10 //vlan 10을 만든다.
sw1(config-vlan)#name ADMIN //vlan10의 이름을 지정해준다/
sw1(config-vlan)#exit //다음 vlan 설정시에는 바로 다음 vlan의 이름을 적어줘도 된다.
sw1(config)#vlan 20
sw1(config-vlan)#name SALES
sw1(config-vlan)#exit
VLAN 할당
sw1(config)#interface range f1/1 - 2 // 포트 F1/1과 F1/2를 동시에 설정하기 위한 모드로 들어간다. 포트 번호가 연속되지 않을 떄에는 interface range f0/5 - 6, f0/9 등과 같이 설정하면 된다.
sw1(config-if-range)#switchport mode access
sw1(config-if-range)#switchport access vlan 10 // 해당 포트의 VLAN 번호를 지정한다.
sw1(config-if-range)#exit
sw1(config)#interface f1/3
sw1(config-if)#switchport mode access
sw1(config-if)#switchport access vlan 20
R3의 VLAN이 R1,R2와 다르므로 통신이 되지 않는다. 그 이유는 ARP가 사용하는 브로드캐스트 프레임이 다른 VLAN으로 전송되지 않아 ARP가 실패하기 때문이다.
VLAN 사이의 라우팅
sw1에 VLAN을 설정함으로써 접속된 장비들이 성능 향상 및 보안성 강화라는 목적을 이룰 수 있다. 그런데 VLAN 사이의 통신이 필요한 경우도 많다. 이를 위해서 서로 다른 VLAN 사이의 라우팅(inter-VLAN routing)이 필요하다. VLAN 사이의 라우팅을 위하여 흔히 사용하는 방법 중의 하나가 라우터를 이용하는 것이다.
라우터 R4를 SW1에 접속시키고, R4의 인터페이스를 논리적으로 분할하여 각각 VLAN 10과 VLAN 20에 할당한다. 이처럼 하나의 물리적인 인터페이스를 여러 개의 VLAN에 소속시키는 것을 트렁킹(trunking)이라고 하며, 해당 포트를 트렁크(trunk)라고 한다.
논리적으로 분할된 각 인터페이스를 서브인터페이스(sub-interface)라고 한다. R4의 VLAN 10에 할당된 서브인터페이스에 설정된 IP 주소를 사용한다.
# 서브 인터페이스 만들기
r4(config)#interface f0/0
r4(config-if)#no shut ## 주 인터페이스인 F0/0을 활성화 시킨다.
r4(config-if)#interface f0/0.10 ## 서브 인터페이스를 만든다. 주 인터페이스 번호 F0/0 다음에 점(.)을 찍고 적당한 서브인터페이스 번호를 지정한다. 0에서 42억 사이의 어느 번호를 사용해도 상관없으나, VLAN 번호, 서브넷 번호 및 서브인터페이스 번호를 동일한 것으로 지정하면 관리 및 장애처리가 편리하다.
r4(config-subif)#encapsulation dot1Q 10 ## encapsulation dot1Q 명령어 다음에 vlan번호 10을 지정한다.
r4(config-subif)#ip address 1.1.10.254 255.255.255.0 ## VLAN 10에 소속된 호스트들이 게이트웨이 주소로 사용할 IP 주소를 지정한다.
r4(config-subif)#exit
r4(config)#interface f0/0.20 ## VLAN 20용 인터페이스를 만든다.
r4(config-subif)#encapsulation dot1Q 20 ## encapsulation dot1Q 명령어 다음에 vlan 번호 20을 지정한다.
r4(config-subif)#ip address 1.1.20.254 255.255.255.0 ## VLAN 20에 소속된 호스트들이 게이트웨이로 사용할 주소를 지정해 준다.
이것으로 VLAN 10,20에 소속된 호스트들이 게이트웨이로 사용할 R4의 설정이 끝났다.
이제 R4와 연결되는 SW1의 F1/4 포트를 트렁크로 지정한다.
트렁크 설정하기
sw1(config)#interface f1/4
sw1(config-if)#switchport trunk encapsulation dot1Q // 트렁킹 방식을 지정한다. 트렁킹 방식에는 dot1q와 isl이 있다.
sw1(config-if)#switchport mode trunk
게이트웨이 주소 지정
r1(config)#ip route 0.0.0.0 0.0.0.0 1.1.10.254
r2(config)#ip route 0.0.0.0 0.0.0.0 1.1.10.254
r3(config)#ip route 0.0.0.0 0.0.0.0 1.1.20.254
VLAN 사이의 라우팅 동작방식.
먼저 r1에서 r3로 핑을 때릴 시 다른 VLAN이면 ARP를 해야한다. 이때, 목적지 IP 주소와 R1의 주소가 서브넷이 다르므로 R1은 게이트웨이 1.1.10.254의 MAC 주소를 찾는 ARP 요청 패킷을 전송한다.
스위치는 목적지가 브로드캐스트인 프레임을 수신하면 수신포트를 제외한 동일 VLAN에 소속된 모든 포트로 플러딩한다. 트렁크 포트는 모든 VLAN에 소속된 것이므로 R4에게도 프레임이 전송된다.
R4가 자신의 MAC 주소를 찾는 ARP에 대해서 응답한다.
R1은 R4가 응답한 ARP 응답 패킷을 수신하고, R4의 MAC 주소를 알게 된다.
R1은 목적지 IP 주소가 R3의 주소인 1.1.20.3으로 설정되고, 목적지 MAC 주소는 게이트웨이인 R4의 것으로 설정된 핑 요청 패킷을 R4에 전송한다.
R4는 목적지 MAC 주소가 자신의 것인 프레임을 수신한 다음, L2헤더를 제거한다. 이처럼 라우터는 프레임을 수신하면 L2 헤더를 제거하고 새로운 것으로 대체한다. L2 헤더를 제거하고 L3 헤더를 확인한 R4는 목적지 IP 주소가 VLAN 20에 소속된 1.1.20.3이라는 것을 알게 된다.
R4는 목적지 IP 주소가 1.1.20.3인 장비의 MAC 주소를 알아 내기 위하여 VLAN 20으로 ARP를 전송한다. 이때 출발지 MAC 주소는 R1이 아닌 R4로 대체된다.
VLAN20에 소속된 F1/3 포트를 통하여 R3이 자신을 찾는 ARP 요청 패킷을 수신한다.
R3이 ARP 응답 패킷으로 자신의 MAC 주소를 게이트웨이인 R4에게 알려준다.
R3의 ARP 응답을 R4가 수신하여 IP 주소 1.1.20.3의 MAC 주소를 알게 된다.
R4는 출발지 MAC 주소가 R4의 MAC 주소, 출발지 IP 주소는 R1의 주소인 1.1.10.1로 설정되고, 목적지 MAC 주소가 R3의 MAC 주소, 목적지 IP 주소는 R3의 주소인 1.1.20.3으로 설정된 핑 요청 패킷을 R3에게 전송한다.
R3이 R4를 거쳐서 R1이 전송한 핑 요청패킷을 수신한다.
이처럼 L3 장비를 통과할 때마다 L2 주소들은 변경되지만 L3 주소인 IP 주소는 변경되지 않는다.
같은 VLAN에 소속된 장비들 사이의 통신은 라우터(물리적 장비)를 통하지 않고 통신한다.
트렁킹
트렁크(trunk) 또는 트렁크 포트란 복수개의 VLAN에 소속된 포트를 말한다. 또, 트렁크가 사용하는 프로토콜을 트렁킹(trunking) 프로토콜이라고 한다.
트렁크 포트와 액세스 포트
하나의 VLAN에만 소속된 액세스 포트와 달리, 트렁크 포트는 복수개의 VLAN에 소속된 포트이다. 다음 그림에서 PC들이 접속된 스위치의 포트들은 모두 하나의 VLAN에만 소속되는 액세스 포트(access port)들이다.
그러나, 스위치 사이를 연결하는 F1/10 포트는 VLAN 10과 VLAN20 모두에 소속시켜야 한다. 이처럼 복수개의 VLAN에 소속된 포트를 트렁크 포트(trunk port)라고 한다.
스패닝 트리 프로토콜이 가지는 문제점을 해결하기 위하여 스위치 사이의 링크를 액세스 포트로 동작시키는 경우도 많다.
트렁킹 프로토콜
일반 이더넷 프레임에는 VLAN 번호를 표시하는 필드가 없다. 따라서, 일반 이더넷 프레임을 사용한다면 SW2는 F1/10을 통하여 SW1에서 수신한 브로드캐스트 프레임을 어느 VLAN으로 플러딩해야할지 알 수 없다.
이 때 사용되는 프로토콜이 트렁킹 프로토콜이다.
수신한 vlan 정보는 제거되고 vlan 10에 소속된 모든 포트로 프레임이 전송된다.
802.1Q 트렁킹
802.1Q 트렁킹은 IEEE 802.1Q에서 정의된 표준 트렁킹 프로토콜이다. 이 방식은 이더넷 프레임의 출발지 주소 다음에 그림과 같이 4바이트 길이의 802.1Q 태크(tag, 꼬리표)를 추가하여 VLAN 번호와 기타 정보를 표시한다.
802.1Q 프레임 태그의 내용은 다음과 같다.
- 이더타입(ethertype) : 현재의 프레임이 802.1Q 프레임이라는 것을 표시하며 값이 항상 0x8100이다.
- 우선순위(priority) : 프레임의 우선순위를 표시한다. 이것을 802.1P 우선순위 필드 또는, CoS(class of service)필드라고 한다. 0에서 7 사이의 값을 가지며, 값이 클수록 우선순위가 높다. 음성이나 동영상 데이터를 전송할 때 이 값을 높게 지정하여 우선 순위를 높이고, 스위치에서 다른 프레임보다 빨리 전송되게 할 수 있다.
- VLAN 번호(VLAN identifier) : 프레임의 VLAN 번호를 표시한다. 필드의 길이가 12비트이므로, 802.1Q 방식으로 지정하려면 인터페이스에서 다음과 같은 명령어를 사용한다.
# 트렁킹 인캡슐레이션을 802.1Q로 지정하기
SW1(config-if)# switchport trunk encapsulation dot1q
이처럼 설정하면 해당 포트가 트렁크로 동작하지는 않지만 동작하게 될 때 802.1Q 방식을 사용하게 된다.
네이티브 VLAN
802.1Q 트렁킹에서는 네이티브(native) VLAN 이라는 것을 지원한다. 네이티브 VLAN이란 트렁크 포트로 전송시 VLAN 표시를 하지 않는 VLAN을 말한다. 다음 그림에서 트렁크 포트의 네이티브 VLAN이 10으로 설정되어 있다고 가정한다. SW1이 VLAN 10에 소속된 PC1에서 프레임을 수신하여 이것을 트렁크 포트로 전송할 때 VLAN 표시를 하지 않고 전송한다.
트렁크포트를 통하여 VLAN 표시가 되지 않은 이더넷 프레임을 수신한 SW2는 해당 프레임을 네이티브 VLAN인 VLAN 10으로만 전송한다. 네이티브 VLAN은 802.1Q 방식의 트렁킹 프로토콜에서만 사용된다. 기본적인 네이티브 VLAN 번호는 1번이며, 가능하면 다른 번호로 변경하는 것이 안전하다.
ISL
ISL(inter-switched link)은 시스코에서 개발한 트렁킹 프로토콜이다. 그러나, 802.1Q와 달리 확장 VLAN을 지원하지 못하여 시스코 스위치에서도 점차 802.1Q로 대체되고 있는 추세다. ISL은 이더넷 프레임은 변경하지 않고, 프레임 앞에 26바이트의 ISL 헤더를 추가한다. 또, 이더넷 FCS 다음에 별도로 4바이트 길이의 ISL FCS를 추가한다. FCS(frame check sequence)는 수신한 프레임의 에러 발생여부를 확인하는데 사용된다.
ISL 헤더의 주요 필드는 다음과 같다.
- DA : 이 프레임이 ISL 프레임이라는 것을 나타낸다.
- User : 이더넷 프레임의 우선 순위를 표시한다.
- VLAN 번호 : VLAN 번호를 표시하는 필드로 15비트가 할당되어 있으나 실제로는 10비트만 사용한다. 따라서, ISL은 1024개의 VLAN만 지원한다.
- BPDU : 나중에 설명할 BPDU, VTP, 또는 CDP 프레임을 전송할 때 이 필드를 1로 표시한다. BPDU 비트가 1로 설정된 프레임을 수신하면, 스위치는 이 프레임의 최종 목적지가 자신임을 알고, 그 내용을 해독하고, 적절한 동작을 취한다.
트렁크 포트의 인캐슐레이션 방식을 ISL로 지정하려면 인터페이스 설정모드에서 다음과 같은 명령어를 사용한다.
# 트렁킹 인캡슐레이션을 ISL로 지정하기.
sw1(config-if)# switchport trunk encapsulation isl
'CCNA' 카테고리의 다른 글
7장 VTP (0) | 2013.03.14 |
---|---|
7장 트렁킹 (DTP 모드) (0) | 2013.03.14 |
6장. 포트보안 (0) | 2013.03.11 |
포트번호 (0) | 2013.03.07 |
6장 트랜스패런트 브리징 (0) | 2013.02.28 |