스패닝 트리 프로토콜(Spanning Tree Protocol)
Looping을 방지시켜주기 위해 사용되는 프로토콜이 바로 STP(Spanning Tree Protocol)이다. 현재는 RSTP(Rapid STP)가 많이 사용되고 있지만 convergence time을 제외한 기본 골격은 거의 유사하다. 따라서, STP의 동작 방식에 우선 간략히 정리해보자 한다. 설명에 사용할 topology는 아래와 같다.
Layer 2 Switching Looping
Layer 3에서는 IP Packet 내부에 있는 TTL을 이용해 Looping을 방지할 수 있지만 Layer 2에서는 그러한 메커니즘이 존재하지 않는다. switch는 언제나 unknown unicast, multicast, 그리고 broadcast (a.k.a BUM traffic) traffic을 flood한다. 예제 topology에서 switch 1에서 PC가 연결되어 있다고 가정하고 해당 host에서 boradcast traffic을 보내게 되면 SW1 -> SW2 -> SW3 -> SW4 -> SW1 방향 및 SW1 -> SW4 -> .. -> SW1 그리고 각각의 스위치에서도 동일한 형태의 traffic이 끝없이 flooding된다. 쉽게 말해서, switch가 reboot되거나 link가 끊어지지 않는 이상 looping은 계속 발생한다.
- Broadcast Storm: 주어진 network topology에서 끝없이 frame loop이 발생하는 구조를 의미한다. 이 상태가 되면 사용 가능한 bandwidth 자원 모두가 고갈되기에 end user 입장에서는 엄청난 속도 저하를 경험하고 더 나아가서는 시스템 자체가 다운되어버린다.
- MAC Address Table Instability: Looping에 의해서 MAC Address가 서로 다른 interface를 통해서 계속 유입되면 MAC Address Table이 계속 변경되어 불안정한 상태가 된다.
BPDU, Bridge ID, 그리고 Path Cost
STP는 물리적으로 loop을 가진 topology를 특정 interface를 차단하여 논리적으로 looping 구조를 없애는 프로토콜이다. 스위치 입장에서는 전체 네트워크 정보를 알기 위한 정보가 필요한데 이 때 사용하는 프레임이 Bridge Protocol Data Unit (BPDU)이다. BPDU는 CBPDU와 TCN BPDU 두 가지 종류로 나뉜다.
- Configuration BPDU: root 스위치를 선출하고 port의 역할을 설정하는데 사용하는 정보
- Topology Change Notification BPDU: topology가 변경되었음을 알리기 위해 사용하는 정보, root 스위치가 TCN을 non-root 스위치로부터 수신하게 되면 root 스위치는 TCN flag를 설정하여 다른 스위치로 포워딩한다.
Field | Bytes | Explanation |
Protocol ID | 2 | 항상 0 |
Version | 1 | STP: 0, RSTP: 2, MSTP: 3 |
Type | 1 | Configuration BPDU (0x00) / TCN BPDU (0x80) |
Flags | 1 | 1 (TC) - 상태가 변경될 때 set 되는 flag / 7 (TCA) - TCN-BPDU 수신시 사용하는 ACK flag |
Root BID | 8 | root의 ID, root가 선출되지 않은 경우라면 자신의 BID |
Root Path Cost | 4 | root 스위치로 가는 경로의 누적된 cost |
Sender BID | 8 | 현재 (보내는) 스위치의 BID |
Port ID | 2 | 포트 ID (낮은 port ID를 선택하기 위한 정보로 사용) |
Message Age | 2 | root 스위치까지의 hop 수, root 브리지는 0으로 set해서 보낸 후 연결된 스위치에서는 1을 더해 그 값을 전달한다. (* 그림 첨부) |
Max Age | 2 | BPDU 정보를 저장하여 유지하는 시간으로 20초가 기본값 |
Hello Time | 2 | 2초가 기본값으로 root 브리지는 매 hello time 주기마다 BPDU를 브로드캐스팅함 |
Forward Delay | 2 | listening과 learning 상태에서 사용되는 타이머로 15초가 기본값 |
Bridge ID는 2 Byte의 우선순위와 6 Byte의 MAC Address로 구성된 값이며 Bridge ID의 값이 가장 낮은 것이 root bridge가 된다. priority는 0 ~ 65535의 값을 가지며 32768이 기본값이다. <참고: VLAN 10을 사용하는 topology에서 스위치의 prioirty값은 32768에서 VLAN ID 10을 더한 32778 > Path cost는 해당 경로를 통과할 때 드는 비용이며 높은 bandwidth의 경로일 수록 낮은 값을 갖게 된다. 10Gbps 2, 1Gbps 4, 100Mbps 19, 10Mbps 100
Root bridge 선출과 port 설정
- Root bridge 선출 (BID 낮은 스위치 -> MAC Address가 낮은 스위치 순서)
- STP Port의 종류
- Designated port - 쉽게 root 스위치의 포트는 모두 designated port
- Root port - non-root 스위치에서 root 스위치로 가는 가장 좋은 경로
- Alternate port - 논리적으로 통신을 못하게 block된 포트
각각 역할의 포트가 선출되는 경쟁조건은 경로값의 합이 작은 port -> 인접 스위치의 BID가 가장 낮은 port -> 인접 스위치의 port ID가 가장 낮은 port 순서로 경쟁
Reference site: http://facweb.cs.depaul.edu/terbush/TDC511/STPTimersExplained.pdf
'<개인공부> - IT > [Network&Security]' 카테고리의 다른 글
멀티캐스트 정리 #2 (IGMPv2 & IGMPv3) (0) | 2022.01.06 |
---|---|
멀티캐스트 정리 #1 (0) | 2022.01.05 |
Port-security overview (0) | 2021.06.30 |
게이트웨이 이중화 (HSRP) #1 (4) | 2021.04.27 |
MAB (MAC Authentication Bypass) Summary #2 (0) | 2021.04.23 |