반응형

<Before>


그림은 이전 포스팅에서 설명했엇던 루트 브리지, 루트 포트, 데지그네이티드 포트 선정이 모두 끝난 상태다.

~> 스위치 A와 스위치 B 사이의 링크와 스위치 A와 스위치 C사이의 링크는 포워딩 상태가 되었다.

~> 스위치 B와 스위치 C 사이의 링크는 블로킹 상태가 되어있다.

~>이때 루트 브리지는 매 2초마다 헬로 (Hello) BPDU를 Non Root Bridge로 전송하고 이 헬로 BPDU를 받은 Non Root Bridge들은 이것을 자신의 데지그네이티드 포트를 통해 다시 전달한다.(2초= 디폴트 헬로타임)

~> 만약 Non Root Bridge들이 지정된 시간동안 헬로패킷을 받지 못하면 중간 경로에 무언가 문제가 발생했다 생각하고 스패닝 트리를 재편성하는 모드로 들어가게 된다.


<용어 정의>

Hello Time(헬로 타임)

-루트 브리지가 얼마만에 한 번씩 헬로 BPDU를 보내는지에 대한 시간

-루트브리지는 자신에게 연결된 브리지들에게 헬로 BPDU를 헬로타임 마다 한 번씩 보낸다(디폴트 헬로타임 =2초)


Max Age(맥스 에이지)

-브리지들이 루트 브리지로부터 헬로패킷을 받지 못하면 맥스 에이지 시간동안 기다린 다음 스패닝 트리 구조 변경을 시작한다.

-브리지들이 루트 브리지로부터 얼마 동안 헬로패킷을 받지 못했을 때 루트 브리지가 죽었다고 생각하고 새로운 스패닝 트리를 만들기 시작하는가에 대한 시간


Forwarding Delay(포워딩 딜레이)

-브리지 포트가 블로킹 상태에서 포워딩 상태로 넘어갈 때까지 걸리는 시간

-블로킹 포트에서 리스닝 상태로 넘어간 포트는 포워딩 딜레이 시간 동안 기다린 다음 러닝 상태로 넘어가고, 러닝 상태에서 다시 포워딩 딜레이 시간동안 기다린 다음 포워딩 상태로 넘어가기 때문에 블로킹에서 포워딩으로 넘어가는데 걸리는 시간은 포워딩 딜레이 시간의 두배가 된다

-즉, 블로킹-> 러닝 ->포워딩 과정을 거친다


~>위에 말한것을 모두 정리해보면,

'루트 브리지는 자기와 연결된 나머지 브리지들에게 헬로패킷을 매 2초마다 뿌리고, 이 패킷을 받은 브리지들은 자신의 데지그네이티드 포트로 다시 그 헬로패킷을 전달한다'


그렇다면 이제 링크하나를 끊어먹어 볼건데 .. 아래에 그림을 보자

이렇게되면 스위치 C는 루트 브리지로부터 헬로패킷을 받지 못한다. 헬로패킷을 2초마다 한번씩 받아야 하는 스위치 C에 
2초 후 헬로 패킷이 돌아오지 않는다면?

'아무일도 일어나지 않는다'. 왜냐면 아직은 맥스 에이지(Max Age) 시간이 지나지 않았기 떄문이다. 스위치에서 맥스에이지 시간은 20초 이다.


~>20초 동안 기다려도 루트 브리지에서 헬로 패킷을 전송 받지 못하면 C는 E0 포트를 통해 들어오던 헬로패킷을 받기를 포기한다. 하지만 스위치 B는 계속 루트 브리지로부터 헬로 패킷을 받고 있기 때문에 핼로패킷을 다시 데지그네이티드 포트를 통해 뿌리고 그 BPDU를 블로킹 되어있던 포트로 받게된다.(블로킹 포트는 포트가 블로킹 상태이지만 BPDU는 받을 수 있다)

~>이러면 블로킹 되어있던 포트를 루트포트로 선정하게 된다. 루트 포트로 선정된 해당 포트는 곧 포워딩 상태로 넘어가고 잘려진 포트는 블로킹 상태로 넘어간다. 

~>블로킹 되어있던 포트는 블로킹에서 포워딩으로 한번에 넘어가는 것이아닌 리스닝을 거쳐, 러닝을 거쳐 포워딩으로 넘어가게 된다, 따라서 디폴트 포워딩 딜레이 타임의 2배인 30초가 필요로 하게 된다.

~>이로 인해서 RSTP(Rapid Spanning Tree Protocol), Port fast, Up-link Fast, Backbone Fast등이 해결책으로 제시되었다.

반응형
,