본문 바로가기

IT 관련/Technical Info

Spanning Tree Protocol

자..차일피일 미뤄왔던 스패닝 트리강좌입니다..ㅎ
스위치에서 가장 중요한 부분중의 하나입니다. 스패닝 트리를 이해하면 그 뒤에 나오는 전반적인
스위치 네트워크의 구조가 한눈에 들어오거든요,..ㅇㅇ 열공!!

우선 항상 제 강의가 그랬듯...
Spanning Tree Protocol의 사전적 의미부터 알아봅시다.
래  Span이라는게 연결다리를 놓다..뭐 이런 뜻이죠..

그럼 네트웍 사전 용어는?

브리지 네트워크를 위한 IEEE 802.1 표준의 하나인 링크 관리 프로토콜. 스패닝 트리 알고리듬(STA)을 사용하여 다중 경로에서 불필요한 경로 발생 시 덧붙임 경로를 제공하여 가장 효율적인 경로를 사용하도록 하게 한다. 두 네트워크 장비에서는 한 번에 오직 하나의 경로만이 동작하고 덧붙임 경로는 장애 시 백업 경로로 사용된다. 만일 경로에 장애가 발생하면 STA는 망을 재구성하여 다른 경로를 대체하여 멈추지 않게 해준다. 스패닝 트리가 없는 경우에는 양쪽 접속이 동시에 작용하기 때문에 무한 반복 현상을 초래할 수 있다.
출처 네이버

이렇게 된다는군요..ㅇㅇ;;복잡;;+_+;'
간단하게 말하면 스위치 네트웍에서 프레임의 루프를 방지해주는 프로토콜이라고 보시면 됩니다.
어떻게??가장 효율적인 경로를 제공함으로써 말이죠....ㅇㅇ;;
덧붙인다면 Transparent Bridging 과 더불어 IEEE 802.1을 구성하는 기술이죠...양대 산맥이랄까..
즉 브리징과 스위칭 중 스위칭이라 보심 되구요;;(삼천포 빠지겠음;;여기까지..ㅋ)
아무튼...자...그러면 이거 대충 왜 배우는지도 나왔죠??위에 잘 읽어보세요;;4줄 위에..ㅇㅇ;;

그름 시작해봅시다~

긴장~긴장..ㅇㅇ;;
네트워크의 안정화를 위해 사람들이 가장 많이 시도하는건 바로 이중화 삼중화겠지요...
역시 스위치 네트워크도 마찬가지랍니다.
특정 스위치나 링크가 다운되도 다른 루트를 통해 네트워크를 동작시킬 수 있기에 이중화를 하죠
또 이중화를 하면 트래픽 분산의 효과도 얻을수 있겠습니다.
허허...다음 그림을 봅시다~~

사용자 삽입 이미지

저 두 노란색 선이 이중화가 된 부분이죠..그런데 그 경로로 인해 루핑이 발생됩니다.
루핑이 왜 발생하느냐;;;
보죠..PC에서 패킷이 전송됩니다
스위치1 로 들어가겠죠...그러면 스플릿 호라즌에 의해 들어온 포트를 제외한 나머지 포트로 전송을 하게 됩니다.
자...그럼 스위치 2는 어떻게 될까요...역시 자신에게 들어온 포트를 제외한 나머지 포트로 전송을 하게 되죠.
그런데;;그 나머지 포트중에 스위치 1로 가는 포트도 있단 말이죠...
쉽게 그림을 다시 단순화 해봅시다....

사용자 삽입 이미지

 
 
자...그림 보죠;;(못그려서 ㅈㅅ;;)
PC에서 패킷이 나왔습니다. 나오면 일단 스위치 1의 fa0/0포트로 들어가겠죠.
그러면 스플릿 호라즌(패킷이 들어온 포트를 제외한 나머지 모든 포트로 브로드캐스트)에 의해 fa0/1로 나가게 됩니다.
그게 흰색 화살표가 뜻하는거구요..(패킷의 움직임입니다)
링크를 따라 스위치 2의 fa0/1 포트로 들어가겠군요..그 패킷을 받은 스위치2는 역시 스프릿 호라즌에 의해
다시 라우터와 연결된 포트 그리고 fa0/0의 포트로 패킷을 보냅니다. 근데;;라우터로 가는 패킷은 문제가 돼지 않는데;;
fa0/0을 통해 스위치 1로 가는 패킷이 문제가 되겠죠
그럼 그 패킷을 받은 스위치 1은 어떻게 할까요;;
역시 PC와 연결된 포트 그리고 fa0/1 을 통해 또 보냅니다;; fa0/1을 통해 나간 패킷은 또 스위치 2를 통해
다시 스위치 1로 들어오고;;루프가 발생되죠..
 
다시 본론으로 돌아가서 이 이중화 구성때문에 이더넷 프레임 Looping이 발생하기에 이를 방지하기 위해
스패닝 트리 프로토콜(Spanning Tree Protocol)을 사용하게 됩니다.
 
 
1. STP의 원리
 
스패닝 트리가 어떻게 이중화에서 루프차단을 하느냐~~
그건 바로 특정 포트를 물리적으로 차단시키기 때문에 그렇습니다.
위의 사진에서 아래쪽의 링크를 물리적으로 차단 시킨다면 이렇게 되겠죠?

사용자 삽입 이미지
 
근데 이렇게 되면...많은 분들이 의심하실겁니다...그냥 단선으로 하나만 구성한거랑 다를바가 뭐냐...
다른건 있습니다.
혹시 지금 쓰는 라인이 끊어질 경우 남색으로 표시된 죽은척 한 라인이 살아나서 이 네트워크를 유지한다는 거죠.
그게 바로 STP의 원리입니다!!

 
2. 루프발생시에 스위치의 현상
 
루프가 발생하면 스위치의 LED들이 굉장히 빠른 속도로 깜빡이고 CPU 사용률이 80%이상으로 올라갑니다
CPU 사용량을 확인하는 명령어는
Switch#show process cpu 가 되겠습니다. 사용량은 낮을수록 좋겠죠?
 
 
3. BPDU(Bridge Protocol Data Unit)
 
Root 스위치라는 개념을 먼저 잡고 가야겠네요..
Root....이건 자칫 잘못하면 OSPF의 DR같은 개념으로 받아들일 수 있는데
완전 다르니 주의하시길...
Root스위치란 길이 되는 스위치..예를들어 스위치 3대가 있을때 꼭 통과해야 하는 스위치를 뜻합니다.
여기서 적절한 그림 투입!ㅋㅋ
 
사용자 삽입 이미지
 
일단 빨강색 x표가 없다고 생각하세요.
저 3대의 스위치를 연결한 네트웍을 돌리면...무한루핑이 초래되겠죠?
그래서 스패닝트리를 사용해 한군데를 비활성화 시킵니다.
그런데..봅시다..스위치 2에서 스위치 1로 가려고 한다는 가정을 할때. 2가지 경로가 나오죠?
바로가는거 돌아가는거...스위치 1에서 3도 마찬가지구요.
루트 스위치란 항상 거쳐야 하는 스위치입니다. 길목 스위치라고 보시면 돼구요.
저 그림에서 루트 스위치는 스위치 2가 되겠군요.
 
루트스위치의 설정은 BPDU의 전송에 의해 이루어집니다.
쉽게 생각하십시다. 라우터에서 라우팅 정보를 넘기듯...BPDU는 스위치간에 설정정보를 담은 프레임입니다.
라우팅 업데이트와 다른점은 BPDU를 만드는 스위치는 Root스위치밖에 없다는 점이죠.
왜 라우팅 업데이트는 neighbor의 개념에서 각 라우터들이 자신의 변경상황을 주기적 혹은 업데이트 될때마다
알려주잖아요. 각자 자신에게 연결됀 라우터로..ㅇㅇ;;
근데 이건 Root스위치 혼자 만들고...다른 스위치들은 이걸 받아서 본담에 다음 스위치로 넘긴다는거죠...
즉 대장Root  스위치가 만든걸 다른 스위치는 돌려서 본다는 뜻입니다.
 
 
4. STP 설정 및 동작
 
STP는 이런 동작 알고리즘이 있습니다.
① Root 스위치 선출
② Root port 선택(Root 스위치 제외)
③ Designated(지정) port 선택(한 세그먼트당)
④ Alternate(차단) port 는 항상 차단
 
ㅎㅎ..대략 감 와요??느낌이 오는 사람이 있을겁니다.
 
단..OSPF 의 DR/BDR선출하고 비슷한 개념으로 잡았다간 큰일납니다....그건 아예 잊으세요!!
 
위의 과정을 하나씩 살펴보도록 하겠습니다.
 
① Root 스위치 선출
 
우선 가장 큰 개념은 브리지 ID를 이용해 Root 스위치를 선출한다 입니다....그름...브리지 ID란 뭐냐..
"루트 스위치 바로 전 스위치"라는 뜻입니다. 즉 루트스위치로 가는 경로상 루트 스위치 직전 스위치의 스위치 ID를 말합니다.
브리지 ID는 우선순위(2byte)/MAC주소(6byte)의 총 8비트 구성으로서 0~65535까지 정할수 있죠~+_+(걍 기억만)
자, 그름...브리지 ID를 갖고 어떻게 선출을 하냐...말이 좀 이상하죠??루트 스위치 바로 전 스위치가 브리지 ID인데;;
브리지 ID를 갖고 루트 스위치를 선출한다??이상하죠???
여러분이 무인도에 떨어졌습니다. 근데..하느님이 당신에게 이웃과 상의해서 왕을 뽑으랍니다.
자기밖에 없는데 뭔 상의;;그냥 자기 이름 적어서 하느님께 내면 됩니다.
똑같겠죠. 아직 서로간의 설정이 끝나지 않은 초기상태에서는 모두가 자신이 루트 브리지인줄 알고 우겨댑니다
즉..모두가 BPDU를 만든다는 거겠죠. 그리고 브리지 ID는 역시 자신의 라우터 ID입니다.
이 때 이 BPDU를 "설정 BPDU"라고 부릅니다. 설정 BPDU를 통해 브리지ID가 가장 낮은 쪽이 루트 스위치가 됩니다.
 
 
② Root port 선택(Root 스위치 제외)
 
Root port라...조금 생소할수도 있겠지만요..이렇게 생각하세요. Root 스위치로 가는 마지막 포트...
즉..루트 브리지에 가장 가까운 포트들을 일컫는 말이죠..각 장비마다 1개씩 존재합니다.
 
그림 봅시다.
사용자 삽입 이미지
 
위 3개의 스위치중 루트 스위치는 Switch 2가 됩니다.
왜냐...각자의 브리지 ID를 살펴보세요.
우선순위값이 모두 같죠? 그렇다면 결국 MAC이 가장 낮은 게 브리지 ID값이 가장 낮다는 소리일텐데...
(왜냐;;브리지 ID 구성이 우선순위값+MAC주소 이니까)
비교해보면 MAC이 젤 낮은게 Switch 2죠.
 
그렇게 되면 Switch1 - Switch3 구간이 다운이 됩니다. 루프를 방지하기 위해서죠.
자..이제 루트 포트를 찾아보죠...
루트포트는 각 장비에서 루트브리지로 가는 가장 최단의 경로를 가진 포트입니다.
그림에서는 빨간점이 찍힌 부분이 바로 루트포트가 되겠죠.
 
 
③ Designated(지정) port 선택(한 세그먼트당)
 
한 세그먼트라 함은 한 네트워크 내에서 하나의 라인으로 이루어진 부분을 말합니다
위 그림에서는 4개가 존재하는군요. pc-switch간에 1개 switch-switch간에 3개..ㅇㅇ;;
자...지금까지 STP 작동 순서중 루트브리지 선출 및 루트포트 지정을 보았습니다.
이번건 지정포트 즉 Designated port 인데요. 이건 이렇게 생각하시면 쉽습니다.
BPDU를 발신만 할수 있는 포트다...그리고 각 링크선마다(각 세그먼트마다) 한개씩 존재한다.
 
그림보죠.

사용자 삽입 이미지


자..노랑색 점과 검은색 점이 늘었습니다.
우선 노랑색 점의 지정포트를 보죠. 대략 이해가 가시는지^^./.
즉 한 세그먼트라는건 하나의 선으로 이루어진 네트웍..즉..저기 보이는 파란선과 그 양쪽의 포트를 모아 하나의
세그먼트라고 부를수 있다는 거죠....그럼 지정포트는 각 세그먼트 당 1개이죠?
반대쪽은 루트포트이니 당연히 노란점 있는쪽이 지정포트가 되겠군요.
또하나 지정포트는 BPDU 발송만이 가능하댔죠?? 네...루트 스위치에서 만든 BPDU값을 지정포트를 통해 보냅니다.
근데!!!루트 스위치와 비루트 스위치간의 연결은 문제가 안돼는데;;헐...

Switch 1  ------ Switch 3의 연결에서 어떤쪽이 지정이 돼야 할까요?

그리고 저 라인은 끊어져야하는 라인이니(루프방지를 위해 STP가 물리적으로 차단하죠ㅇㅇ;;)
한쪽포트는 꼭 차단포트가 되어야 한다는 거죠. 흠흠;;
저럴 경우 차단포트는 브리지 아이디가 딸리는 쪽이 차단포트 됩니다.
생각해보세요 사실 차단 시킬려면 제일 안좋은 포트를 차단시켜야겠죠?
사회에서도 누군가를 짤라야 한다면 막내나 가장 비중없는 쪽을 잘라내죠.
마찬가지입니다. 극히 인간적인 스위치 형님은 브리지 아이디가 가장 높은(우선순위가 제일 낮은) 스위치의 포트를 차단포트로 만듭니다.ㅇㅇ;;

자...그럼 저 위에 검은 점도 이해가 가시죠?? 차단포트가 돼었습니다.

④ Alternate(차단) port 는 항상 차단

사실...위 3단계까지만 해도 STP는 다 됐다고 볼수 있어요.
네트워크에 변화가 생기기 전까지 저 차단된 포트는 절대~~열려선 안됩니다. 루프~방지!!ㅇㅇ;;

휴~ 길었군요...사실 제가 중간에 포트의 종류에 대해 빼먹었었죠..

열심히 쓰다보니 그랬다는^^;;
그치만 제 글 찬찬히 읽으셨다면 다 아실수 있으리라 믿어요.

포트의 종류는 루트포트/지정포트/차단포트 3개가 있고, 루트포트는 루트 브리지(루트 스위치)로부터 BPDU를 바로 받는..즉 루트 스위치가 아닌 한 장비에서 루트 스위치와 가장 가까운 포트라고 할 수 있죠.
각 장비당 1개씩 존재합니다.
지정포트는 그 반대편 혹은 대체포트 반대편에 있는거구요...
각 세그먼트당 1개씩 존재합니다.
대체포트는 그 네트웍 내 차단 링크중 최악의 브리지 ID를 가진 포트입니다.
만약 브리지 ID가 같다면 포트 ID로 비교합니다.
fa0/0인지 fa0/1인지..등등 ..이럴경우 fa0/1이 포트번호가 높으니 차단포트가 되겠죠.
이제 STP 기본 구동조건을 모두 갖췄습니다.

다음강의때는 어떻게 STP를 이용해 네트워크가 활성화 되는지 알아보도록 하겠습니다~


좋은 하루 되세요^^