데이터 링크 계층(Looping, STP)
Looping
-정의
: 같은 네트워크 대역 대에서 스위치에 연결된 경로가 2개 이상인 경우에 발생
PC가 브로드캐스팅 패킷을 스위치들에게 전달하고 전달 받은 스위치들은 Flooding을 한다
스위치들끼리 Flooding된 프레임이 서로 계속 전달되어 네트워크에 문제를 일으킨다.
-원인
: 회선 및 스위치 이중화 또는 증축 등에 의해 발생
: 물리적인 포트 연결의 실수 또는 잘못된 이중화 구성으로 L2에서 빈번하게 발생하는 이슈
-구조
Looping을 해결하기 위하여 STP(Spanning Tree Protocol) : IEEE 802.1d
스패닝 트리 프로토콜 (자동으로 루핑을 막아주는 스패닝 트리 알고리즘)
-개념 2가지 (Bridge ID, Path Cost)
1. Bridge ID : 스위치의 우선순위 (0~65535로 설정)
2. Path Cost : 스위치간 경로가 누가 더 빠른지에 대한 우선순위
(링크의 속도(대역폭), 1000/링크 속도로 계산 작을 수록 우선순위 높음)
IEEE에서 기준을 정항 : 10Mbps=100, 100Mbps=19, 1Gbps=4
-요소(Root Bridge, Root Port, Designated Port)
![]() |
1. Root Bridge 선출 : 각각의 스위치 1,2,3는 Root Bridge ID을 가진다. (2byte BID+6byte MAC 주소) 32768 default값 : BPDU를 서로 교환하고 가장 낮은 Switch1이 루트 브리지가 된다. |
![]() |
2. Root Port 선출 : 나머지 스위치들 중에 루트 브리지와 가장 빠르게 연결되는 루트 포트로 선출 : Root Path Cost값이 가장 낮은 Switch 1은 P1, Switch 3은 P0를 Root Port가 된다. |
![]() |
3. Designated Port 선출 : 세그먼트별 루트 브리지와 가장 빠르게 연결되는 포트를 Designated 포트로 선출 (우선 순위 : 루트브리지ID > Path Cost > 브리지 ID > 포트 ID) Switch 1 P0 & P1, 1Gbps 라인에서는 Switch 3 P1이 Designated Port로 선출 |
STP(Spanning Tree Protocol)
-BPDU(Bridge Protocol Data Unit) : 스위치들간 통신할 수 있는 수단(프로토콜)
: 스패닝 트리 프로토콜에 의해 스위치간 서로 주고받는 제어 프레임
1. Configuration BPDU (구성관련 부분을 업데이트 해주는 BPDU)
: Root BID (루트브리지 스위치 정보)
: Path Cost (루트 브리지까지 경로 비용)
: Bridge ID, Port ID (나머지 스위치와 포트의 우선 순위)
2. TCN(Topology Change Notification) BPDU
: 네트워크 내 구성 변경 시 통보
-상태변화 (스위치의 포트는 스패닝 트리 프로토콜 안에서 5가지 상태로 표현된다.)
1. Disabled (죽어있다)
: 포트가 Shut Down인 상태로 데이터 전송 불가, MAC 학습 불가, BPDU 송수신 불가
2. Blocking
: 스위치를 부팅하거나 Disabled 상태를 명령을 통해 Up(살려냈을)했을 때 첫번째 거치는 단계, BPDU만 송수신
(동일하게 다른 단계는 다 안되지만 각 스위치들간 우선순위 확인을 위하여 BPDU 송수신)
3. Listening(15초)
: Blocking 포트가 루트 또는 Designated port로 선정되는 단계, BPDU만 송수신
(BPDU를 통해서 Root port, Designated port 선정)
4. Learning(15초)
: 리스닝 상태에서 특정 시간이 흐른 후 learning 상태가 됨, MAC 학습 시작, BPDU만 송수신
(준비가 되어 통신하기 위해 MAC address를 저장하기위해 학습 시작, 그 와중에도 변화될 수 있는 port확인을 위해 BPDU 송수신)
5. Forwarding
: Learning 상태에서 특정 시간이 흐른 후 포워딩 상태가 됨, 데이터 전송 시작, BPDU만 송수신
(프레임을 전달할 수 있는 단계)
예제
Looping 상태 1. Switch 1 -> Switch 2 경로 2개, Switch 2 -> Switch 3 경로 2개, Switch 3 -> Switch 1 경로 2개 로 루핑 상태 확인 |
![]() |
BPDU 교환 (R : 루트포트 선정, D : Designated port 선정) 나머지 ND: Non-Designated port 2. BPDU를 서로 교환하여 Switch 1 루트 브리지 선출하고 각 세그먼트 별 Root Port(R), Designated Port(D) 선정하고 나머지는 ND(Non-Designated port 지정) |
![]() |
상태변화 (길이 하나만 생기므로 Looping이 발생하지않는다) 3. Root Port와 Designated Port는 Forwarding 상태(F), Non-Designated port는 블로킹 상태(Blocking)로 하여 논리적으로 고립된 구성으로 Looping 문제를 해결한다. |
![]() |
RSTP(Rapid Spanning Tree Protocol) : IEEE 802.1w
: STP를 적용하면 포워딩 상태까지 30~50초 걸리는데 컨버전스 타임을 1-2초 내외로 단축
(Learning & Listening 단계가 없음)
MST(Multiple Spanning Tree) : IEEE 802.1s
: 네트워크 그룹이 많아지면 STP or RSTP BPDU 프레임이 많아지고 스위치 부하가 발생
여러 개의 STP 그룹들을 묶어서 효율적으로 관리