VLAN (Virtual LAN)
- 한 대의 스위치를 마치 여러 대의 분리된 스위치처럼 사용하고, 여러 개의 네트워크 정보를 하나의 포트로 전송이 가능하다.
① 가상랜을 구성하면 라우터 포트 절약, 스위치 절약을 할 수 있다.
② 스위치의 한 포트로 여러 네트워크 정보를 보낼 수 있다. (트렁킹)
③ 가상랜으로 여러 네트워크를 구성했을 때, 반드시 라우터를 거쳐야만 다른 VLAN 네트워크와 통신이 가능하다. (VLAN 간의 통신은 라우터를 거쳐야 가능하다.)
- 라우터 없이 VLAN1
XVLAN2, VLAN2XVLAN3 통신 불가
④ 하나의 스위치로 여러 네트워크를 구성할 수 있다. (= 브로드캐스트 도메인을 나눌 수 있다.)
⑤ 같은 VLAN 끼리는 스위치를 건너서 통신이 가능하다. (트렁킹 포트를 통해서)
- ex) VLAN1 - VLAN1, VLAN2 - VLAN2
트렁크 포트 (Trunk Port)
- 하나의 포트를 통해 서로 다른 여러 개의 VLAN을 전송
- VLAN 정보 또한 전송 (어느 VLAN에 속한 패킷인지 목적지에서 구분 가능)
Static VLAN
- 일반적인 방식.
- 스위치의 각 포트들을 원한는 VLAN에 하나씩 배정해주면 된다.
Dynamic VLAN
- 대형 스위치에서 기능 제공
- 그 포트에 접속하는 맥 어드레스를 보고, 그 주소에 따라 VLAN을 배정
※ 장비가 스위치 포트에 접속하기 전까지는 스위치의 포트에 VLAN이 세팅되어 있지 않다.
※ VMPS (VLAN Membership Policy Server)
- Primary : 주 서버
- 백업 : 주 서버 사망 시 사용
※ TFTP 서버 : 맥 어드레스와 이에 해당하는 VLAN 정보를 가진 FTP 서버
① 장비가 스위치에 접속되면 맥 어드레스를 비운다.
② 배운 맥 어드레스를 VMPS 서버로 보낸다.
③ VMPS 서버는 DB(TFTP서버)를 뒤져서 맥 어드레스에 해당하는 VLAN 값을 찾은 후 해당 스위치에 넘겨준다.
④ 전달받은 스위치는 그 값으로 세팅한다.
VTP (VLAN Trunking Protocol)
트렁킹 (Trunking)
- 각 스위치의 여러 개의 VLAN 정보를 하나의 포트(링크)를 통해 한 번에 전달. => VLAN 별로 이름표를 태깅하여 전달
- VLAN 마다 각 링크를 만들어줘야 하지만 그렇게 되면 너무 많은 링크를 필요로 함
트렁킹 방식
IEEE 802.1Q (Dot1Q)
- 트렁킹의 표준 프로토콜
- 네이티브 VLAN (Native VLAN) 지원
- 이름표를 붙이지 않음 (Untagged 트래픽)
- 패킷에 VLAN 정보를 붙이지 않고 전송
- 모든 스위치 네트워크에서 유일하게 한 개의 VLAN만을 세팅 가능
ISL (Inter-Switch Link)
- 시스코 장비 전용, 비표준 프로토콜
- 네이티브 VLAN 미지원 => 모든 패킷에 VLAN 정보 태깅
※ VTP Advertisement를 주고 받을 수 있는 트렁킹의 종류 : ISL 링크, IEEE 802.1Q 링크, LAN Emulation(LANE) 링크
VTP
- 시스코 장비 전용 프로토콜
- 스위치들 간에 VLAN 정보를 서로 주고 받아서 VLAN 정보를 항상 일치시켜줌
=> 새로운 VLAN을 추가하거나 제거할 때, 각 스위치에 접속해서 하나하나 작업해야 한다.
=> VTP서버에서 한 번만 VLAN 정보를 설정해도 VTP 서버는 다른 스위치와의 트렁크 링크를 통해서 VLAN 정보를 자동으로 업데이트 한다.
* VTP 도메인 이름은 VLAN을 새로 만들거나 변경하기 전에 꼭 먼저 만들어줘야 함.
* VTP 메시지는 트렁크 포트로만 이동한다.
VTP 모드
VTP 서버 모드
- VLAN 생성, 삭제, 이름변경 가능
- VTP 도메인 내 스위치들에게 VTP 도메인 이름과 VLAN 구성, Configuration Revision 넘버를 전달해 줄 수 있다.
- VTP 도메인에 대한 모든 VLAN 정보를 NVRAM에서 관리한다. (NVRAM : 비휘발성 RAM으로 전원이 꺼져도 저장된 정보를 잃지 않도록 설계된 메모리)
VTP 클라이언트 모드
- VLAN 생성, 삭제, 이름변경 불가능
- VTP 서버가 전달해준 VLAN 정보를 받고, 자기와 연결된 다른 쪽 스위치에 전달하는 것만 가능
- NVRAM에 저장 안함. (스위치 리부팅 시 VLAN 정보를 잃고, VTP 서버로부터 다시 받아야함)
VTP 트랜스페어런트 모드 (Transparent Mode)
- VTP 도메인 영역 안에 있지만 서버로부터 받은 정보를 자신의 VLAN을 업데이트 하거나 자신의 VLAN을 업데이트 한 정보를 다른 스위치에 전달하지 않는다.
- 서버로부터 받은 메시지를 연결된 다른 스위치로 전달하거나 연결된 다른 스위치 쪽에서 서버쪽으로 가는 VTP 메시지를 전달만 해준다.
- VLAN 생성 및 삭제 가능 (단, 자기만 알고 있음)
- NVRAM에 저장
- 주로 로컬 스위치에서만 사용할 VLAN을 가진 스위치에 사용
VTP 메시지
Summary Advertisement
- VTP 서버가 연결되어 있는 스위치로 5분마다 한 번씩 전달한다.
- 자신이 관리하는 VTP 도메인의 구성에 대한 Revision 넘버를 보낸다.
- 스위치들은 Revision를 보고 자신의 VLAN 정보가 최신버전인지 판단한다.
- VLAN 구성에 변화가 생겼을 때, 5분을 기다리지 않고 즉시 전달한다.
Subset Advertisement
- VLAN의 구성이 변경되었을 때나 VTP 클라이언트로부터 Advertisement Request를 받았을 때, 전송된다.
- 실제 VLAN 정보는 이 Subset Advertisement에 저장되어 전달된다.
Advertisement Reqeust
- 클라이언트 VTP서버에 Summary Advertisement와 Subset Advertisement를 요청하는 용도로 사용된다.
- 클라이언트는 자신의 Revision Number보다 더 높은 Revision Number를 가진 Summary Advertisement를 전달 받거나, VTP 도메인 이름이 바뀌거나, Subset Advertisement를 잃어버렸거나, 스위치가 리셋되었을 때, VTP 서버로 보낸다.
초기의 스위치 상태
=> VTP Domain Name X, VTP Mode = Server(Default), Revision Number = 0, VLAN = 1 (Default)
VTP 서버와 클라이언트
① 스위치 A는 VTP 서버 모드이고, 도메인을 Cisco로 주었다.
- VLAN 2, 3, 4를 추가했다. (Config Revision이 3으로 변경됨)
*Config Revision 값은 VLAN이 새로 만들어지거나 지워질 경우 1씩 추가된다.
② VTP 서버인 스위치 A는 B와 C에게 Summary Advertisement 메시지를 보낸다.
③ B는 VTP 도메인 이름을 Cisco로 변경하고 Config Revision 넘버를 비교한다.
- 자신의 Revision Number 0보다 높은 3이 들어 왔으니, A에게 Advertisement Request를 보낸다.
④ A는 B에게 Summary Advertisement와 Subset Advertisement를 보낸다.
⑤ B는 Subset Advertisement를 받고 VLAN 2,3,4를 추가하고 Configurartion Revision을 3으로 변경한다.
- 스위치 B와 A간의 VLAN 정보 일치 (Syncronization, Sync(싱크))
결론
① VTP 서버는 트렁크로 연결된 스위치에 5분마다 Summary Advertisement를 보낸다.
② VTP 클라이언트는 VTP 서버로부터 받은 Configuration Revision Number를 보고 업데이트 체크.
③ VTP 서버와 VTP 클라이언트는 VLAN 정보를 일치시킨다. => 싱크
VTP 트랜스페어런트
① VTP 서버인 A는 B와 C에 Summary Advertisement를 전송한다.
② C는 트랜스페어런트 모드이기 때문에 VTP 도메인 이름과 Configuration Number를 받았지만, C는 이 메시지를 자신의 VLAN 정보에 반영하지 않는다. D로 보내준다.
③ C는 자신의 도메인 이름을 Cisco로 설정하고 VLAN 10과 20을 추가했다.
- 이 정보는 어떤 스위치로도 전송하지 않는다.
* 트랜스페어런트 모드의 Configuration Revision Number는 언제나 0이다.
결론
① 트랜스페어런트 모드는 VTP 서버로부터 받은 Summary Advertisement 메시지는 자신의 VLAN 정보에 반영하지 않고 다른 스위치로 전달한다. (릴레이 역할)
② 트랜스페어런트 모드에서는 VTP Domain Name을 지정해줘야하고 VLAN 정보를 추가하거나 삭제할 수 있다. 다른 스위치에는 이 정보를 보내지 않는다.
VTP Pruning
- 트렁크로 이동하는 VLAN 트래픽 중에서 갈 필요가 없는 트렁크 쪽으로 트래픽이 흘러갈 경우 그 부분을 가지친다.
* 스위치 A~G 모든 스위치는 VLAN으로 세팅되어 있고, 스위치들 끼리는 트렁크로 연결되어 있다. VLAN5는 A와 F만 설정되어 있다.
① 스위치 F에 연결된 PC에서 브로드캐스트 발생!
<VTP 프루닝이 설정되지 않은 경우>
- 이 브로드캐스트는 트렁크를 통해서 모든 스위치로 전달된다.
- 스위치 A를 제외한 모든 스위치는 VLAN5에 속한 포트가 없기 때문에, 이 브로드캐스트를 버리지만, 트렁크의 대역폭은 소비되었다.
<VTP 프루닝이 설정된 경우>
- 트렁크로 전달되는 트래픽을 보고 해당 경로로 갈 필요가 있는지 확인한다.
- VLAN5를 가지고 있는 스위치 쪽만 길을 열고, 아닌 길은 가지치기 한다.
결론
- VTP Pruning은 가지고 있지 않은 VLAN 정보에 대한 트래픽은 비록 모든 VLAN을 전송해주는 트렁크라고 하더라도 받지 않는다. => 트렁크 대역폭 절약
VLAN 구성하기
* 스위치의 IP 세팅은 VLAN1에 한다. => VLAN1은 메니지먼트 VLAN 역할을 함.
Switch(config)# vtp domain cisco // VTP Domain 설정 (VLAN을 만들거나 삭제하기 전 먼저 해야할 작업)
Changing VTP domain name from NULL to cisco
Switch(config)# vtp mode server // VTP 서버모드 적용 (server, client, transparent)
Setting device to VTP SERVER mode
Switch(config)# do show vtp status // VTP 구성 확인 (Config모드에서 do를 사용하면 프리빌리지모드 명령어 사용 가능)
VTP Version: 2
Configure Revision: 0
...
VTP Operating Mode: Server
VTP Domain Name: cisco
...
Configuration last modified by 0.0.0.0 at 3-1-93 00:46:05
Switch(config)# int fa0/1
Switch(config-if)# switchport mode trunk // 트렁크 포트로 세팅 (서로 포트가 같아야 통신 가능)
-------Cat2550은 Dot1Q만 사용 가능---------------------------------------------------------
-------Cat3550은 encapsulation 명령어를 통해 dot1Q와 ISL을 설정 가능------------------------
Cat3550(config-if)# switchport trunk encapsulation [dot1q | isl | negotiate]
// dot1q : IEEE 802.1Q, isl : ISL, negotiate : 상대방 모드에 맞춤
Switch(config-if)# exit
Switch(config)# do show interface fa0/1 switchport // 포트 설정 상태
Name: Fa0/1
Switchport: Enabled
Administrative mode: trunk // trunk 모드 세팅
Operational Trunking Encapsulation: dot1q // IEEE 802.1Q
...
Trunking Native Mode VLAN: 1(default) // Native VLAN 1
...
Switch(config)# do show interface trunk // 스위치 전체에서 트렁크로 세팅된 포트에 대한 상태
Port Mode Encapsulation Status Native Vlan
Fa0/1 on 802.1q trunking 1
Switch(config)# do show vlan // VLAN 구성 상태
VLAN Name Status Ports
------------------------------------------------------------------------
1 default active Fa0/2, Fa0/3, Fa0/4, Fa0/5, // 디폴트 상태(모든 포트는 VLAN 1 소속)
...
Fa0/22, Fa0/23, Fa0/24 // Fa0/1은 트렁크로 세팅되어 보이지 않음
1002 fddi-default active
...
1005 trnet-default active
VLAN Type SAID MTU parent RingNo BrdigeNo stp BridgeMode Trans1 Trans2
-----------------------------------------------------------------------------
1 enet 100001 1500 - - - - - 0 0
...
1005 trnet 101005 1500 - - - - - 0 0
Switch(config)# do show interface status // 각 포트의 상태
port Name Status Vlan Duplex Speed Type
----------------------------------------------------------------
Fa0/1 Connected trunk Half 10 100BaseTx/FX // Duplex와 Speed는 전에 세팅한 값이다.
Fa0/2 Connected 1 A-Full A-100 100BaseTx/FX
Fa0/3 notConnect 1 Auto Auto 100BaseTx/FX
...
Fa0/24 notConnect 1 Auto Auto 100BaseTx/FX
Switch(config)# do show vtp status
...
Maximum VLANs Supported locally: 64 //2950 VLAN을 64개 구성할 수 있고, 3550은 최대 1,005개의 VLAN을 만들 수 있다.
Number of existing VLANs: 6
Switch(config)# vlan 2 // (config-VLAN 모드) 2번 VLAN 추가 및 설정
--------------설정 방법 #1----------------------------------------
Switch(config-vlan)# name CCNA
Switch(config-vlan)# exit
--------------설정 방법 #2(VLAN Configuration 모드 CatOS시절 방법 Catalyst 2900)--------
Switch# vlan database
Switch(vlan)# vlan 2 name CCNA
VLAN 2 added:
Name: CCNA
Switch(vlan)# exit
APPLY Completed
Exiting....
---------------------------------------------------------------------------------------
Switch(config)# do show vlan
VLAN Name Status Ports
------------------------------------------------------------------------
1 default active Fa0/2, Fa0/3, Fa0/4, Fa0/5,
...
Fa0/22, Fa0/23, Fa0/24
2 CCNA active // 새로운 VLAN 2 CCNA 생성확인
...
-------------VLAN 삭제 방법 #1-----------------------------------------------------------
Switch(config)# no vlan 2 // VLAN 2 삭제
-------------VLAN 삭제 방법 #2 (VLAN Configuration 모드 CatOS시절 방법 Catalyst 2900)-----
Switch# vlan database
Switch(vlan)# no vlan 2
Deleting VLAN 2 ...
Switch(vlan)# exit
APPLY Completed
Exiting....
----------------------------------------------------------------------------------------
Switch(config)# do show vlan
VLAN Name Status Ports
----------------------------------------------
1 default active Fa0/2...
...
1002 fddi-default active
...
Switch(config)# do show vtp status
Configuration Revision: 3 // vlan을 만들고 지우는 횟수 (2번 VLAN 생성, 이름 변경 및 삭제)
Switch(config)# int fa0/5
-----------VLAN 2를 생성하고 이름을 CCNA로 지정한 후 진행----------------------------------
Switch(config-if)# switchport access vlan 2 //switchport access vlan [vlan number | dynamic] // vlan number를 주면 static VLAN 아니면 Dynamic VLAN
Switch(config-if)#^Z // Ctrl + z
Switch# show vlan brief
VLAN Name Status Ports
------------------------------------------------------------------------
1 default active Fa0/2, Fa0/3, Fa0/4, Fa0/6,
...
Fa0/22, Fa0/23, Fa0/24
2 CCNA active Fa0/5 // VLAN 2에 Fa0/5 등록
...
Switch# show vlan id 2 // vlan 2의 상태만 표시
VLAN Name Status Ports
------------------------------------------------------------------------
2 CCNA active Fa0/5
VLAN Type SAID MTU parent RingNo BridgeNo stp BridgeMode ...
------------------------------------------------------------------------
2 enet 100002 1500 - - - - -
Switch# configuration terminal
Switch(config)# int fa0/5
Switch(config-if)# no switchport access vlan 2 // fa0/5 포트를 vlan 2에서 제외
Switch(config-if)# exit
Switch(config)# do show vlan brief // fa0/5는 디폴트 VLAN인 VLAN1로 돌아간다.
VLAN Name Status Ports
------------------------------------------------------------------------
1 default active Fa0/2, Fa0/3, Fa0/4, Fa0/5,
...
Fa0/22, Fa0/23, Fa0/24
2 CCNA active
...
1005 trnet-default active
VLAN 응용
<스위치 설정>
Switch(config)# hostname Cat2950 //스위치의 호스트 이름 변경
Cat2950(config)# enable password cisco // enable 패스워드 지정
Cat2950(config)# interface vlan 1
Cat2950(config-if)# ip address 10.10.10.2 255.255.255.0
Cat2950(config-if)# no shutdown
Cat2950(config-if)# exit
Cat2950(config)# vtp mode transparent
Cat2950(config)# vtp domain cisco
Cat2950(config)# vlan 2
Cat2950(config-vlan)# name CCNA
Cat2950(config-vlan)# exit
Cat2950(config)# int fa0/1
Cat2950(config-if)# switchport mode trunk
Cat2950(config-if)# switchport trunk allowed vlan all
Cat2950(config-if)# exit
Cat2950(config)# int fa0/5
Cat2950(config-if)# switchport access vlan 2
Cat2950(config-if)# exit
Cat2950(config)# do show vtp status
VTP Version: 2
...
VTP operating Mode: Transparent
VTP domain Name: cisco
<라우터 설정>
Router(config)# hostname Router01
Router01(config)# enable password cisco
Router01(config)# int fa0/0
Router01(config-if)# no shutdown
Router01(config-if)# exit
Router01(config)# int fa0/0.1
Router01(config-subif)# encapsulation dot1q 1 native
// IOS 버전이 12.1(3)T 버전 이하이고 IEEE 802.1Q를 세팅해야 한다면 생략해도 되는 구문
// 이유는 VLAN 1은 Native가 기본이라서
Router01(config-subif)# ip address 10.10.10.1 255.255.255.0
Router01(config-subif)# exit
Router01(config)# int fa0/0.2
Router01(config-subif)# encapsulation dot1q 2
Router01(config-subif)#exit