2009.03.10
Switch 기능중에는 loop 방지를 위한 STP 기능이란게 있습니다.
이것이 어떤 기능을 하는지 알아볼까요?
STP (3개 루핑) 된 테이블 (#show spanning-tree)
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 32768
Address 0014.7c50.8ca0
Cost 200018
Port 1 (FastEthernet0/1)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address 0016.c8af.fe80
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 15
Interface Role Sts Cost Prio.Nbr Type
—————- —- — ——— ——– ——————————–
Fa0/1 Root FWD 19 128.1 P2p
Fa0/16 Desg FWD 19 128.16 P2p
Fa0/17 Desg FWD 19 128.17 P2p
Fa0/23 Desg FWD 19 128.23 P2p
Fa0/24 Desg FWD 19 128.24 P2p (FWD 통신가능상태 / BLK 통신불가상태 STP)
STP(강의)
- Root Bridge(기준점생성)
- Designated port / Root port
- Root Bridge
1.1 BPDU (스위치 생성시 Frame 생성)
1.1.1 Root BID (Bridge ID)
BID(8byte) = Bridge priority(2byte) + Mac Address(6byte)
Bridge priority는 32768로 고정 (= 0x8000)
1.1.2 Path cost
예전에는 1000/대역폭 으로 계산하였으나 10Gbps 등장이후 쓰이질 않는다
IEEE에서 새로 지정
대역폭 / cost
10Mbps = 100
100Mbps = 19
1gbps = 4
10gbps = 2
1.1.3 Sender BID = 32768 + 스위치 MAC주소
1.1.4 Port ID = 스위치의 Port 숫자번호
※ BID 값이 작은쪽이 Root Bridge가 된다.
연산후에 Root Bridge와 Non-root Bridge로 나뉜다.
- Designated port / Root port 비교법
- Non – Root Bridge 중에서 Root와 가장 가까운 Port Path Cost를 가지고 비교한다
- 작은쪽값이 Root Port가 된다.
- Designated port는 1segment에 무조건 하나를 가진다. (1segment = 스위치와 스위치 한구간)
- STP 구성시 라인 단절 확인법.
- Hello BPDU는 Root bridge가 Designated port를 통해 전송한다
- Max age = Hello BPDU를 Non – root Bridge가 최대로 기다릴수 있는시간 (Default 20 sec)
- Block port는 모든 패킷을 막지만 단 한가지 패킷 BPDU는 수신할수 있다.
STP(Spanning Tree Protocol)
일반적인 스위치 네트워크는 복수개의 링크로 연결하는 경우가 많다. 그 이유는 특정스위치에 장애가 생기거나, 링크가 다운되어도 전체 네트워크는 계속 동작할 수 있기 때문이다. 또, 특정 목적지로 가는 트래픽을 분산시켜 전체적인 속도를 더 빠르게 할 수 있다. 장거리 통신망도 이와 같이 백업 및 로드 밸런싱 (load balancing) 구조로 설계하지만 이를 유지하기 위한 비용이 비싸다. 그러나, 스위치 네트워크는 초기 투자비외에는 추가적으로 발생하는 비용이 크지 않기 때문에, 비교적 소규모라 해도 복수개의 링크로 구성하는 경향이 있다. 이처럼 스위치간을 루프 (loop) 구조로 구성하면 어떤 문제가 발생할 수 있는 지 살펴보자. 먼저 브로드캐스트 프레임의 루핑 (looping) 문제가 발생한다. 스위치는 브로드캐스트 프레임을 수신하면, 동일한 VLAN에 속한 모든 포트로 전송한다. 이를 플러딩 (flooding) 이라고 한다. 이를 수신한 인접 스위치는 또 브로드캐스트 프레임을 플러딩한다. 이외에도 MAC 어드레스 테이블이 불안정해지며, 특정 호스트가 동일한 프레임을 중복해서 수신할 수도 있다. 이와 같은 문제를 해결하기 위해 사용되는 것이 스패닝 트리 프로토콜 (STP, Spanning Tree Protocol)이다. 즉, 스패닝 트리 프로토콜이 동작하면 물리적으로는 루프가 형성된 네트워크를 논리적으로 루프가 없게 만든다. 결과적으로 앞서 설명한 문제를 모두 해결해준다.
즉 간단히 얘기해서, L2계층통신에서 발생하는 local loop를 방지하기 위한 프로토콜임. 스위치(브리지)간에 root bridge, designate Port, block Port를 선별하여 STP토폴로지를 구성, local loop를 막습니다. 이때 토폴로지 구성에 BPDU frame의 스위치(브리지)정보를 이용합니다.
- BPDU(Bridge Protocol Data Unit)
BPDU란 스위치(브리지)간 정보 교환을 위한 frame데이터이다. 이는 네트웍내에서 발생할 수 있는 네트웍루프를 장비하기위한 STP의 정보데이터가 된다. STP가 동작하면 스위치는 35 바이트의 고정된 길이를 가지는 컨피규레이션 BPDU(Bridge Protocol Data Unit)라는 프레임을 전송한다. BPDU는 다음과 같이 구성되어 있다.
-필드 크기(바이트) 내용
-프로토콜 (protocol) ID 2 항상 0
-버전 (version) 1 BPDU의 버전 표시. STP : 0, RSTP : 2, MST : 3
-타입 (type) 1 BPDU 종류 표시. 0x00 : 컨피규레이션 BPDU, 0x80 : TCN BPDU
-플래그 (flag) 1 토폴로지 변화 표시. 0x01 : TC, 0x80 : TCA
-루트 브리지 (root brigde) ID 8 루트 스위치의 ID
-패스 코스트 (path cost) 4 루트 스위치까지의 경로 값
-브리지 (bridge) ID 8 루트 스위치로 가는 경로상, 직전 스위치의 스위치 ID
-포트 (port) ID 2 포트 ID
-메시지 에이지 (message age) 2 루트 스위치가 현 BPDU를 만들고 경과된 시간
-맥스 에이지 (max age) 2 BPDU 정보를 저장하는 시간
-헬로 타임 (hello time) 2 BPDU 전송 주기
-포워드 딜레이 (forward delay) 2 리스닝 상태와 러닝 상태에 머무르는 기간
표 BPDU의 필드 및 내용
BPDU는 컨피규레이션 BPDU외에 TCN BPDU라는 두 종류가 있다.
BPDU는 3개의 시간을 갖으며, Hello 타임(Hello time), 전달 지연 시간(Forward delay time), 최대 수명 시간(Max age tiem)등이 있다. 우선 Hello 타임은 root bridge에 의해 보내지는 BPDU의 간격이라 보면 되고 간격은 2초이다. 전달 지연 시간은 라우터가 브릿지 테이블을 완성하는데 걸리는 시간으로 15초인데, 전달 지연 시간은 리스닝과 학습상태의 지속 시간으로 각각 15초이므로 총 시간은 30초가 된다. 마지막으로 Max age time은 BPDU가 업데이트되기전까지 저장되는 시간으로 20초이다. 그래서 총 50초의 시간이 소요되는데, 이 시간이 스위치간의 다이렉트로 연결이 되어있을시에는 Max age time이 제외된 30초가 소요된다는 점에 유의한다.
STP가 loop-free leaf 토폴로지를 구성하는데 필요한 정보가 되며, 이 BPDU는 2초간격으로 스위치(브리지)간 교환하게 된다.
RSTP
흠 간단하게 말하면 STP 보다 개선된 프로토콜이라 할수있습니다
IEEE 802.1W입니다. 흔히 이야기하는 Rapid Spanning Tree 혹은 RSTP로 불리는 넘 입니다.
이것도 IEEE 802.1D와 동일하게 Loop을 방지하는 프로토콜 입니다. 하지만 이름 그대로 빠릅니다.
Listening에서 Fowarding까지 2초밖에 안걸립니다. 45초에서 2초…죽이죠?
이것 역시 BPDU를 뿌립니다. 그렇다구 위에 언급한 꿍수(?)처럼 BPDU를 자주 뿌리는 것은 아닙니다.
BPDU방식이 다릅니다. 기존 IEEE 802.1D의 BPDU는 단순 자신의 MAC주소와 Bridge Priority값만을 가지고 있었습니다.
그리고 나중에 learning과정에서 Topology를 구성했죠..
하지만 IEEE 802.1W의 BPDU에는 그 이외에 자신의 Topology를 포함해서 보냅니다. reply하는 넘 역시 받은 Toplogy에 자신의 Toplogy를 업뎃 해서 보내기에 Learning이라는 과정이 없습니다. IEEE 802.1D를 대신해 IEEE 802.1W가 요즘 대세죠..
RSTP port의 종류
– Root Port
– Alternate Port : rp가 다운되었을 경우에 대신해 주는 port, 자신이 아닌 BPDU를 받는 Port
– Designated Port
– Backup port : dp가 문제가 발생했을 경우에 대신해주는 port, 자기 자신으로 부터 발행되는 BPDU를 받는 Port
이전의 stp의 블러킹 포트가 rstp로 넘어가면서 ap와 bp로 나누어 졌다
ap는 rp가 다운이 감지되었을 때 그 역할을 대신해 주고,
dp가 다운이 감지되었을 때 그 역할을 대신해 주는 port가 bp 이다.
RSTP Link Type의 종류
-Edge : Edge – 스위치와 일단 시스템에 연결되어 있는 링크(스위치-스위치 간의 연결은 아님)
point-to-point(full-duplex) – port 의 상태가 full-duplex인 경우
- edge의 경우 RSTP가 형성이 된다.
(half-duplex 의 경우 일반적인 CSMA/CD 환경)
-Shared Link : multipoing(half-duplex)
– 허브와 스위치는 일반적으로 half-duplex로 연결
– 허브에 여러대의 시스템이 물린 환경인 경우 RSTP 구현이 되지 않는다.
– 스위치와 스위치간에 half-duplex로 연결되어 있을경우 shared link 환경이 구현되지 않는다.
half-duplex로 되어 있을 경우에,
( -if)#span link-type point-to-point
shared link 상태를 강제로 point-to-point로 인식되게 하는 명령어.
#sh int status // interface의 상태가 나온다
-Auto : Auto negotioation > Speed : 서로간에 시그널을 교환후에 알맞는 대역을 설정, 둘다 지원해 줄 수 있는
> duplex : halp-auto => half-duplex
auto-auto => Full-duplex
*Full-auto => half, duplex mismatch!!
각각의 interface에서 수동조절이 필요.
(router의 설정은 half로, switch는 auto로 설정되어 있음)
( -if)#speed 100
10
auto
( -if)#duplex half
full
auto
라우터와 스위치의 처음 연결시 체크하고 되도록이면 메뉴얼로 설정할 것.
MSTP(Multiple Spanning Tree Protocol)
▣PVSTP는 각 vlan 마다 하나의 instance가 존재한다. 즉 vlan이 10개이면 10개의 vlan instance가 존재하고 이것은 스위치 cpu에 부하를 일으킨다. 따라서 몇몇 vlan을 묶어서 그녀석들 끼리는 같은 vlan instance를 지니게 해서 부하를 줄이는데 이것이 MSTP이다.
▣vlan instance 수가 줄어드므로 pvst+보다 빠른 convergence시간을 가지고 802.1d , 802.1w와도 호환이 가능하다.
▣vlan수가 그다지 많지않은 ECNM에선 꼭 필요한 것이 아니다.
▣같은 MSTP configuration을 돌리는 bridge들은 같은 MST region안에 있다고 한다.
▣1000개의 vlan을 가진 PVST를 5:5 비율로 인위적으로 나눠서 load balancing을 했다고 하더라도 1000개의 instance를 5:5비율로 서로 다른 토폴로지에 적용시킨것 밖에 되지 않는다.
2.MST regions
▣다음과 같은 경우를 생각해보자. 어떤 vlan이 어떤 instance에 속해있는지 어떻게 알 것인가? > BPDU를 태깅해서 instance와 그것을 어떤 vlan에 적용시킬지 구분한다. CST에는 한개의 vlan instance만 존재하고 PVST에는 각 vlan마다 각기 다른 BPDU를 보낸다고 한다.
▣동일한 MST region에 들어가려면 name,revision number,vlan association table이 일치해야한다.
▣각 region 마다 다른 digest값을 가지고 이것은 BPDU에 포함되어 전송되는데 다른 포트에서 들어온 BPDU에서 추출한 값과 자기 digest값과 비교해서 같으면 같은 region 다르면 다른 region이라 판단한다.
3.Extended system Id
▣Extended system Id(12bit길이)부분에 instance id가 기재된다.
4.MST region과 802.1Q와의 상호작용

▣MST와 802.1D가 섞여 있을때는 위와 같이 동작한다. MST region에는 최소한 하나의 IST(Internal Spanning Tree)가 존재해야한다.
▣전체의 MST region이 ISTP를 통해 마치 하나의 스위치처럼 보여지는 것이다. IST는 전체의 region을 마치 하나의 가상의 스위치처럼 보이게 한다. BPDU는 region 경계선을 이루는 스위치의 트렁크 포트의 native vlan를 통해서 마치 CST BPDU처럼 교환된다.
▣MST region은 한개의 큰 IST로 대표되어서 마치 하나의 큰 스위치인양 CST에서 인식되는데 큰 IST를 쪼개보면 그 안에 각 MST instance가 있다. 한개의 region당 16개의 MSTIs(MST Instances)가 존재할 수 있는데 IST는 항상 MSTI 0번에 지정된다. IST만이 BPDU를 주고 받는다. MSTI가 아무리 많아도 BPDU는 한종류만 생성 되는것이다.
▣MST region 안에서 스위치끼리는 RSTP를 돌리면서 loop를 방지하고 있다.
▣MST와 PVST+가 연결될 경우? : MSTP는 region을 대표하는 IST의 BPDU 한개만 존재,PVST+는 각 vlan마다 BPDU가 존재한다. MSTP가 PVST와 연결될 경우 MSTP는 PVST의 vlan 개수만큼 BPDU를 복사해서 뿌린다.
▣MST region안의 MSTIs은 IST와 같은 파라메터를 쓴다(ex.같은 hellotime,forward delay,max time을 가진다)
▣요약하면 한 MST region은 하나의 IST로 CST에게 하나의 가상 스위치로 보여지며 IST로만 보면 하나로 보이지만 실제로는 여러개의 MST Instance가 집합해 있는것이다. vlan들을 묶어서 하나의 instance로 돌려서 cpu부하를 줄이는데 이 instance들은 자체적으로는 RSTP를 돌린다. 이 instance들이 RSTP를 돌리는데는 MST instand 마다의 다르게 생성되는 BPDU의 M-record라는 서브 필드가 사용되고, Hellotime같은 공통파라메터는 IST의 파라메터로 통일된다.
5.MSTP command
▣(config)#spanning-tree mst configuration > MSTP configuration submode 들어가기
▣(config_mst)#show current > 현재 mstp 컨피그 보여주기
▣(config_mst)#name 이름 > region 이름 지정
▣(config_mst)#revision revision번호 > revision번호 지정, 그냥 구분자 역할만 한다 자동으로 증가하지 않음
▣(config_mst)#instance instance번호 vlan vlan번호 > vlan에다 instance 지정
▣(config_mst)#spanning-tree mst instace번호 root primary|secondary
▣(config)#spanning-tree extend system-id > Mac address reduction or extended system id 사용
▣(config)#spanning-tree mst pre-standard > MSTP prestandard 버전 사용
출처 : http://www.spkr.co.kr/switch-%EA%B8%B0%EB%8A%A5-stp%EC%97%90-%EA%B4%80%ED%95%B4%EC%84%9C/