안녕하세요
뚱보프로그래머 입니다.
오늘은 스위치에 대해서 간단히 알아봅니다.
- 스패닝 트리 알고리즘 - 스위치나 브리지에서 발생하는 루핑을 막아주기 위한 프로토콜
=> 브리지 ID - 브리지나 스위치들이 통신할 떄 서로를 확인하기 위해 하니씩 가지고 있는 번호
Bridge Prioriy는 디폴트로 그 중간에 해당하는 값인 32768을 사용
- Path Cost - 길을 가는데 드는 비용, 비리지가 얼마나 가까이 빠른 링크로 연결되는지를 알기위한값
* 100Mbps를 두 장비 사이의 링크 대여폭으로 나눈 값을 사용
* IEEE에서 소수점이 나오지 않도록 하기위해 Path Cost값을 정의
- 스위치의 루핑을 방지하기위한 기본 세 가지
=> 네트워크당 하나의 루트 브리지를 갖는다.
=> 루트 브리지가 아닌 나머지 모든 브리지는 무조건 하나씩의 루트 포트를 갖는다.
=> 세그먼트당 하나씩의 데지그네이티드 포트를 갖는다.
* 용어
루트브리지 : 스패닝 프로토콜을 수행할 떄 기준이 되는 브리지(스위치)
루트포트 : 루트 브리지에서 가장 빨리 갈 수 있는 포트, 루트 브리지쪽에 가장 가까움
세그먼트 : 브리지 또는 스위치 간에 서로 연결된 링크, 즉 브리지나 스위치가 서로 연결되어 있을때 이 세그먼트에서
반드시 한 포트는 데지그네이티드 포트로 선출함
* 스패닝 트리 프로토콜에서 루트 포트나 데지그네이티드 포트가 아닌 나머지 모든 포트는 다 막아버린다.
루트 포트와 데이그네이티드 포트를 뽑는 목적은 어떤 포트를 살릴지 결정하기 위함.
- 루트 브리지, 루트 포트나 데지그네이티드 포트 정하는 순서
1. 누가 더 작은 Root BID를 가졌는가
2. 루트 브리지까지의 Path Cost 값은 누가 더 작은가
3. 누가의 BID 가 더 낮은가
4, 누구의 포트 iD가 더 낮은가
브리지(스위치도 같은)는 스패닝 트리 정보를 자기들끼리 주고받기 위해서 특수한 BPDU프레임을 사용
BPDU에는 루트 브리지의 BID(Root BID), 루트 브리지까지 가는 경로값(Root Path Cost)
보내는 브리지의 BID인 (Sender BID), 어떤 포트에서 보냈는지 (Port ID)
* 브리지나 스위치가 부팅을 하면 각각의 포트로 BPDU를 매 2초마다 내보내면서 정보를 주고받게된다.
- 스위치에서 대장 브리지 뽑기
=> 자기 BID값을 보내고 받은 BID값을 자기의 것과 비교하여 크면 대장으로 받아들이고 작은면 상대 스위치가 대장이 되는 과정으로
이루어진다.
=> BID가 낮은 스위치가 루트 브리지가 되며 특정 스위치를 루트 브리지로 만들려면 Bridge Priority의 값을 디폴트 값본다 낮게 설정
시스코 스위치 Catalyst 2950에서 브리지의 Priority값을 변경시
명령 -> SW-3(config)#spanning-gtree 피무 1 priority값을 변경시
-> 브리지의 Prioriy를 디폴트 값인 32768에서 100으로 변경
Bridge Priority의 값이 바뀐 것은 'show spanning-tree' 명령을 통해서 확인할 수 있다.
- 졸병 브리지의 루트 포트 산출기 =>
루트 브리지가 아닌 스위치의 포트와 루트 브리지의 포트와의 Path Cost가 낮은 한 개의 포트가 푸트모드가된다
- 데지그네이트 포트뽑기
루트 브리지까지의 Path Cost가 낮은 한 개의 포트가, Path Cost가 같을 경우 4단계를 거친다.
ND(Non Designated Port) : 즉 루트 포트나 데이그네이티드 포트가 아닌 나머지 포트
- 스패닝 트리 프로토콜의 5가지 상태 변환
루트 브리지를 어디로 잡느냐에 따라 어떤 링크가 살고, 어떤 링크가 죽을지 결정되는 것처럼 링크의 속도에 따라서도 크게 영향을 받는다. 스위치 네트워크를 디자인할 때 염루해야 할 것이다.
- Non Root Bridge들이 지정된 시간 동안 헬로패킷을 받지 못하면 중간 경로에 문제로 생각하고 스패닝 트리를 재편성하는 모드로 들어가 게 된다.
* 용어
- Hello Time : 루트 브리지가 얼마만에 한 번씩 헬로 BPDU를 보내는지에 대한 시간
- Max Age : 브리지들이 루트브리지로부터 얼마 동안 헬로패킷을 받지 못했을 때 루트 브리지가 죽었다고 생각하고 새로운
스패닝 트리를 만들기 시작하는가에 대한 시간
- Forwarding Delay : 브리지 포트가 블로킹 상태에서 포워딩 상태로 넘어갈 때까지 걸리는 시간
1. 스위치 C에서 루트브리지로부터 헬로패킷이 들어오지 않음
2. 맥스 에이지 시간이 지나도 E0포트를 통해 들어오지 않음
3. 스위치 C는 스위치 B에서 전달해 준 헬로패킷을 자신의 E1포트로 받아들여 E1포트를 루트포트로 세팅
4. 리스닝 상태에서 15초를 기다리고 러닝상태에서 15초를 그후 포워딩 상태로 넘어가고 이때 기존의 루트 포트로 포워딩 상태였던
스위치 C의 E0포트는 블로킹이됨
- 스패닝 트리 프로토콜 개선 기법 - RSTP, Port fast, Up-link, Fask, Backbone fast
- 카타리스트 스위치
* 시스템 LED
* RPS(Redundant Power Supply) LED : 무정전 전원공급기
* 포트모드
* 포트상태 LED
- 카타리스트 스위치 구성
=> Duplex는 통신방식인데 Half Duplex와 Full Duplex로 나누어지고
Auto로 설정하면 상대편의 상태에 따라 내가 맞추겠다는 의미이다.
Speed 역시 상대와 속도가 맞지 않으면 문제가 발생한다.
=> IP 주소를 셋팅하면 나중에 스위치 구성을 확인/변경할 떄 텔넷을 이용한 접속이 가능하기 때문에 스위치에 IP주소를 세팅한다.
=> 네트워크 관리시스템(NMS) 같은 장비에서 스위치를 관리하는 데도 IP주소가 필요함
=> '>' 표시 상태를 유저 모드라고 한다.
=> enable명령을 사용하여 프리빌리지모드에서 스위치의 구성을 확인하고 변경이 가능
>에서 #(운영자모드)으로 바뀜
=> 구성모드로 들어가는 명령은 configure terminal 이다.
switch#에서 Switch#(config)#으로 바뀜
=> exit 명령을 사용하여 한 단계씩 빠져나옴
=> Switch#(프리빌리지모드)에서 show interface vlan 1을 입력하면 현재 vlan 1에 할당된 IP주소를 알수있다.
IP주소는 vlan 인터페이스 모드에서 디폴트 게이트웨이는 일반 구성모드에서 셋팅
show interface명령 - 인터페이스에 대한 구성을 볼때
- 맥 어드레스
=> 스위치나 브리지가 출발지에서 들어오는 맥 어드레스를 보고 그것을 자신의 맥 어드레스 테이블에 저장한 다음, 그 주소 테이블에
있는 맥 어드레스를 찾으면 그쪽 포트로만 보내고 나머지 포트는 막아줌으러써 스위치의 기본 기능중 하나인 콜리전 도메인을
막는 역할을 한다.
=> Dynamic(자동)방식 : 맥 어드레스를 자동으로 배움 하나를 배우고 사용한지 디폴트로 300초가 지나도록 다시 사용되지 않으면
MAC 테이블엣 삭제됨(용량한계때문)
=> 수동(Permanent)방식 : 절대 지워지지 않도록 맥 어드레스를 저장하는 방식
=> show mac-address-table 명령 : 맥 어드레스 테이블을 볼때사용
Mac Address Table
---------------------------------
Vlan Mac Address Type Ports
---- ------------- -------- -----
1 000.f064.4b91 DYNAMIC Fa0/1
패스트 이더넷 0/1쪽에 0000.f064.4b91 맥 어드레스가 있는 것을 배웠다는 뜻
어느 쪽 포트에서든 이 맥 어드레스를 목적지로 갖는 녀석이 들어오면 그 패킷은 바로 패스트 이더넷 0/1쪽으로 보내준다는 의미
- 스태틱 맥 어드리스 셋팅법
=> 장점 : 스태틱으로 지정해주면 시간이 지나도 지워지지 않을 뿐만 아니라 다시 이 맥 어드레스를 알기 위하 Learning과장을 거칠
필요가 없다.
=> 단점 : 주소가 바뀐다고 해도 자동으로 수정 불가, 메모리가 낭비
switch(config)#mac-address-table static aaaa.aaaa.aaaa vlan 1 interface fastEthernet 0/24
위의 예는 맥 어드레스 aaaa.aaaa.aaaa가 vlan 1을 통해서 들어왔을 때 목적지 인터페이스가 패스트 이더넷
0/24번이라는 것을 스태틱으로 구성
Switch# show mac-address-table < -- 맥 어드레스 테이블 확인 명령
clear mac-address-table < -- 맥 어드레스 테이블 지우는 명령
- 가상 랜(Virtual LAN) - 한 대의 스위치를 마치 여러 대의 분리된 스위치처럼 사용하고, 또 여러 개의 네트워크 정보를 하나의 포트를
통해 전송할수 있음 하나의 스위치에 연결된 장비들도 브로드캐스트 도메인이 서로 다를 수 있다.
=> VLAN이 지원되는 라우터와 스위치를 사용하는 경우
* 라우터 : 스위츠로 한의 링크만을 이용해서도 3개의 네트워크 정보를 같이 실어보낼수 있음
한 선에 여러 개의 네트워크 정보를 보내는 것이 가능해짐
* 스위치 : 여러 개의 브로드 캐스트 영역을 나누어줄 수 있게됨
- VLAN에서 꼭 기억해는 할 몇 가지
=> 스위치에서 지원하는 기능, 허브나 브리지는 또는 라우터에서 지원안함
=> 한 대의 스위치를 여러 개의 네트워크로 나누기 위해서 사용
VLAN으로 나누어지면 나누어진 VLAN간의 통신은 오직 라우터를 통해서만 가능
=> 각 포트들은 서로 다른 3개의 스위치 중 어디에도 속할수 있음.
스위치 안에 있는 스위치 각각을 우리는 VLAN이라 한다.
* 트렁크포트(Trunk Port) - 하나의 포트를 통해 서로 다른 여러 개의 VLAN을 전송할 수 있게 하는 포트
=> 트렁크 포트가 가능하기 때문에 VLAN은 여러 대의 스위치에 구성이 가능
즉, 같은 VLAN VLAN 1과 VLAN 1, VLAN 2 와 VLAN 2, VLAN 3과 VLAN 3끼리만 통신가능
=> 패킷에 VLAN정보도 같이 전송되므로 어느 VLAN소속 패킷인지 목적지에서 구분가능
- 트렁킹 - 모든 VLAN이 하나의 링크를 통해 다른 스위치나 라우터로 이동하기 위함 만듦
이름표에 따라 ISL 트렁킹과 IEEE802.1Q 방식으로 나눔
=> ISL - 시스코에서 만든 프로토콜로 시스코 장비끼리만 사용하는 방식
스위치과 스위치간의 링크, 스위치오 라우터 간의 링크에서 여러 개의 VLAN정보를 함께 전달
모든 VLAN에 이름표를 붙임. 이 패킷들은 서로 다른 VLAN에 속하므로 통신은 라우터를 통해야함
=> IEEE 802.1Q - 트렁킹 표준 프로토콜, 실제 패킷 안에서 어떻게 이름표를 붙이느냐가 서로 다름
Catalyst 2950의 경우 iEEE802.1Q만을 지원함
네이티브 VLAN - 특별 대우를 하는 이름표를 달지 않은 패킷, 모든 스위치 네트워크에서 유일
- VTP(VLAN Trunking Protocol) - 스위치들 간에 VLAN정보를 서로 주고받아 스위치들이 가지고 있는 VLAN 정보를 항상 일치시켜
주기위한 프로토콜
* VTP간에 주고 받는 메시지 3가지 형식
1. Summary Advertisement : VTP서버가 자기에게 연결되어 있는 스위치들에게 매 5분마다 한 번씩 전달하는 메시지
2. Subset Advertisement : VLAN의 구성 변경시 VTP클라이언트로부터 Advertisement Request 메시지를 받있을 때 전송
3. Advertisenment Request : 클라이언트가 VTP 서버에게 Summary Advertisement와 Sebset Advertisement를 요청하는 용도로 사용
* VTP의 세가지 모드
1. VTP 서버 모드 : VLAN을 생성, 삭제, 이름변경, VTP 도메인 안에 있는 나머지 스위치들에게 VTP 도메인 이름과 VLAN 구성,
Configuration Revision 넘버를 전달해 줄 수 있다.
VLAN정보를 NVRAM에서 관리하고, 꺼졌다 켜져도 정보를 그대로 가지고 있음
2. VTP클라이언트 모드 : 서버가 전달해준 VLAN정보를 받고 그정보를 자기와 연결된 다른 쪽 스위치에 전달.
스위치가 리브팅하면 정보를 잃게 됨
3. VTP 트랜스페어런트 모드 : VTP 도메인 영역안에 있지만 서버로부터 메시지를 받아 자신의 VLAN을 업데이트하거나 자신의
VLAN을 업데이트하거나 자신의 VLAN을 업데이트한 정보를 다른 스위치에게 전달하지 않는다.