스패닝 트리 프로토콜
스위치나 브리지에서 발생하는 루핑을 막아주기 위한 프로토콜
출발지에서 목적지로 가는 경로가 2개 이상 존재할 떄 1개의 경로만을 남겨두고 나머지는 모두 끊었다가, 사용하던 경로에 문제가 생기면 끊었던 경로를 하나씩 살림
두 가지 개념
-
브리지ID: 브리지나 스위치들이 통신 시 서로를 확인하기 위한 고유 번호
- 브리지 ID 생성 방법
- 16비트의 브리지 우선순위와 48비트의 맥 어드레스로 만들어짐
- 브리지 우선순위에 올 수 있는 수는 0~2^16-1까지(아무런 구성도 하지 않을 시 디폴트는 중간값인 32768)
- 그 뒤의 자신의 고유 맥 어드레스가 옴
-
Path Cost
세 가지 기본적인 동작
- 네트워크당 하나의 루트 브리지를 갖음
- 하나의 브로드캐스트 도메인에 하나씩의 루트 브리지가 있음
- 루트 브리지는 스패닝 트리 프로토콜 수행 시 기준이 되는 브리지(스위치)
- 루트 브리지 선정
- BID가 가장 낮은 값이 루트 브리지가 됨
- ex) 스위치 A,B,C가 있다고 가정, 스위치 A의 BID= 32768.1111.1111.1111, 스위치 B의 BID= 32768.2222.2222.2222, 스위치 C의 BID= 32768.3333.3333.3333
- 먼저, 스위치 B, C 부팅 -> BPDU(Bridge Protocol Data Unit. 스패닝 트리에 대한 여러가지 정보를 담고 있으면서 2초에 한 번 뿌려지는 프레임) 공유(초기 Sender BID는 자신의 BID, 루트 브리지의 BID는 자신의 BID) -> 자신의 BPDU에 있는 루트 브리지 BID가 상대방의 루트 브리지 BID보다 작으면 BPDU의 BID를 변경
- 스위치 A 부팅 -> 초기 BPDU를 뿌림(Sender BID가 자신의 BID, 루트 브리지의 BID가 자신의 BID인) -> 다같이 BPDU 공유 -> BPDU의 루트 브리지의 BID는 BID가 제일 작은 스위치 A의 BID가 됨
- 루트 브리지가 아닌 나머지 모든 브리지는 무조건 하나씩의 루트 포트를 갖음
- 루트 포트란 루트 브리지에 가장 빨리 갈 수 있는 포트
- 루트 브리지가 아닌 브리지들은 루트 브리지 쪽과 가장 가까이 있는 루트 포트를 하나씩 지정해주어야 함
- 루트 포트 선정
- Root Path Cost(루트 브리지까지의 Path Cost)가 가장 작은 포트가 루트 포트
- 세그먼트당 하나씩의 Designated 포트를 갖음
- 세그먼트란 브리지 또는 스위치 간 서로 연결된 링크
- 이 링크에서 반드시 한 포트는 Designated 포트로 선출되어야 함
- Designated 포트 선정
- 링크 양끝에 달려있는 두 포트 중 Root Path Cost가 작은 포트가 Designated 포트가 됨
- 루트 브리지의 모든 포트들은 항상 Designated 포트가 됨(Root Path Cost가 0이기때문)
- 두 포트의 Root Path Cost가 같다면?
- 1단계: 누가 더 작은 Root BID를 가졌는지
- 2단계: Root Path Cost 값은 누가 더 작은지
- 3단계: 누구의 BID가 더 낮은지
- 4단계: 누구의 포트 ID가 더 낮은지
스패닝 트리 프로토콜은 위 세가지 규칙을 적용해 어느 쪽 링크를 살려두고, 어느 쪽 링크를 끊을지 결정(루트 포트나 Designated 포트가 아닌 포트는 다 끊음)
5가지 상태 변화
이렇게 스패닝 트리 프로토콜을 구현해 나가는 과정에서 모든 스위치나 브리지의 포트들을 5가지 상태로 변한다.
- Disabled: 포트가 고장나서 사용할 수 없거나 네트워크 관리자가 포트를 일부러 Shut Down 시켜놓은 것
- 데이터 전송 x
- 맥 어드레스 학습 x
- BPDU 공유 x
- Blocking: 스위치를 맨 처음 켤 때, 또는 Disabled 되어 있는 포트를 관리자가 다시 켰을 때
- 데이터 전송 x
- 맥 어드레스 학습 x
- BPDU 공유 o
- Listening: Blocking 상태에 있던 스위치 포트가 루트 포트나 Designated 포트로 선정되면, Listening 상태로 변화
- 데이터 전송 x
- 맥 어드레스 학습 x
- BPDU 공유 o
- Learning: Listening 상태에 있던 스위치 포트가 포워딩 딜레이 디폴트 시간인 15초 동안 상태를 유지하면, Learning 상태로 넘어감
- 데이터 전송 x
- 맥 어드레스 학습 o
- BPDU 공유 o
- Forwarding: 스위치 포트가 Learning 상태에서 다른 상태로 넘어가지 않고 다시 포워딩 딜레이 디폴트 시간인 15초 동안 상태를 유지하면, Forwarding 상태로 넘어감
- 데이터 전송 o
- 맥 어드에스 학습 o
- BPDU 공유 o
Listening, Learning, Forwarding 상태에 있던 포트도 루트 포트나 Designated 포트에서 탈락되면, Blocking 상태로 넘어갈 수 있음
또한, 포트의 고장이나 사용자에 의한 Shut Down으로 인해 Disabled 상태로 넘어갈 수 있음
이제 Root Port와 Designated Port는 Forwarding
상태, Non Designated Port는 Blocking
상태가 되어 출발 노드에서 도착 노드로 가는 경로가 하나만 존재하게 됨
루트 브리지가 어디로 선정되냐와 링크의 속도가 얼마나 빠르냐에 따라 어떤 링크가 살고, 어떤 링크가 죽을지 결정 됨
스패닝 트리 재편성
필수 용어
- Hello Time: 루트 브리지가 얼마 만에 한 번씩 헬로 BPDU를 보내는지에 대한 시간(디폴트 헬로 타임은 2초)
- Max Age: 브리지들이 루트 브리지로부터 헬로 패킷을 받지 못하면 맥스 에이지 시간 동안 기다린 후 스패닝 트리 구조 변경 시작
- Forwarding Delay: 브리지 포트가 블로킹 상태에서 포워딩 상태로 넘어갈 때까지 걸리는 시간(디폴트 15초)
스패닝 트리 재편성
- 루트 브리지는 자신과 연결된 나머지 브리지들에게 헬로 패킷을 매 2초(디폴트 헬로 타임)마다 뿌림
- 이 패킷을 받은 브리지들은 자신의 Designated 포트로 다시 그 헬로 패킷 전달
- 만약 헬로 패킷을 받는 포트쪽의 링크 연결이 끊어졌다면, 맥스 에이지 시간동안 기다림(디폴트 20초)
- 맥스 에이지 시간 동안에도 헬로 패킷이 오지 않는다면, 스패닝 트리 변경 시작
- 블로킹 상태에 있는 포트 중 헬로 패킷을 받고 있는 포트를 Designated 포트로 재선정하고(Forwarding 상태로 변경), 연결이 끊긴 포트를 Blocking 상태로 변경(디폴트 30초= 15+15)
=> 대략 50초 정도 소요(생각보다 오래 걸림)
카타리스트 스위치
CISCO에서 만든 스위치의 한 종류
Cisco Catalyst 2960-24PC-L
24는 포트 수 즉, 24개의 포트
P= PoE를 지원하는 스위치
C= Dual Purpose Uplink(오른쪽 네개 포트중 위 두 포트는 SFP포트(광케이블) 아래 2 포트는 10/100/1000 Base T 포트. 두 방식 중 선택해서 사용(UTP). 동시 사용은 불가)
Cisco Catalyst 2960-48PST-L
48은 포트 수 즉, 48개의 포트
P= PoE를 지원하는 스위치(PoE= Power over Ethernet. 이더넷 케이블 위에 데이터뿐만 아니라 전원까지 같이 보냄, IP 전화기, AP 무선 랜 장비, IP 감시 카메라 등에 전원까지 같이 제공해야 함)
ST= SFP와 TP 방식의 업링크 포트를 제공한다는 뜻(TP는 UTP 방식. SFP는 광케이블용 접속 방식, 속도는 1Gbps)
카타리스트 스위치 구성
디폴트 구성
- show interface status: 스위치에서 각 포트들의 현재 상황을 볼 수 있는 명령
- 각 포트들의 상태는 아직 연결되어 있지 않음
- 모두 Vlan 1번으로 구성
- Duplex는 Auto(상대방의 상태에 맞추겠다(Full Duplex와 Half Duflex 중))
- Speed는 Auto(상대방에 맞추겠다(10Mbps와 100Mbps 중))
- IP 주소나 패스워드는 세팅을 하지 않았으니 없음
- 스패닝 트리 프로토콜은 자동으로 활성화되어 있어, 루핑 방지 중
IP 주소 세팅(선택 사항. 권장 사항)
- IP 주소 세팅은 스위치를 제대로 관리하기 위해 필요(스위치 구성을 확인하거나 변경하고자 할 때 텔넷을 이용한 접속이 가능+NMS 같은 장비에서 스위치 관리하는데도 필요)
- 스위치 자체에 하나의 IP 주소만을 부여
enable
명령을 통해 privileged
모드로 접속
configure terminal
명령으로 구성 모드로 접속
vlan 1
인터페이스에서 IP 주소 세팅
interface vlan 1
ip address 192.168.100.1 255.255.255.0
privileged
모드에서 show interface vlan 1
명령으로 세팅 확인
- 디폴트 게이트웨이 구성
configure terminal
ip default-gateway 192.168.1.1
- vlan 인터페이스가 아닌 일반 구성 모드에서 하면 됨
스위치 포트 속도와 Duplex 세팅
-
configure terminal
명령으로 privileged
모드로 들어감
-
interface fastethernet 0/1
명령으로 변경해주고자 하는 인터페이스로 들어감
-
speed 10
명령으로 스위치 포트 속도를 10mbps로 세팅
-
duplex half
명령으로 duplex를 half duplex로 세팅
-
show interface fastethernet 0/1
명령으로 세팅 확인