브리지나 스위치에서 자주 발생하는 루핑(Looping)현상에 대해 알아보도록 하겠습니다.
위의 사진을 보시면 두 호스트 사이에 스위치 또는 브리지가 두 개 있습니다.
즉 하나의 호스트에서 다른 호스트로 가는 경로가 두 개 이상 만들어진다는 겁니다.
보통 이렇게 구성하는 것은 하나의 경로가 끊어져도 다른 경로를 쓰기 위한 것인데
이렇게 구성을 하게 되면 가장 큰 문제, 즉 루핑이 발생하게 됩니다.
호스트 A가 브로드캐스트 패킷을 보냅니다. 그럼 양쪽 브리지(스위치)로 전달이 되고
두 개의 브리지는 이 패킷을 분석합니다. 패킷이 브로드캐스트 패킷이란 걸 알아낸 브리지는 플로딩(Flooding)을 하게 됩니다. 브리지는 목적지 주소를 보고 그 주소가 자신의 브리지 테이블에없거나, 멀티캐스트 주소이거나, 브로드캐스트 주소인 경우에는 들어온 포트를 제외한 나머지 모든 포트로 뿌려주는 플로딩을 하게 됩니다.
그럼 상대방쪽 세그먼트로 브로드캐스트 패킷이 보내지겠죠?
즉 양쪽 브리지에서 모두 패킷이 다리를 건너게 됩니다. 그 다음엔 반대쪽으로 건너간 브로드캐스트 패킷은 다시 양쪽 브리지의 아래쪽 포트로 전달되고 이 패킷 역시 브리지 특성에 따라 다시 위로 전달 됩니다. (즉, 다시 다리를 건너오게 됩니다.)
이런 과정이 반복되게 되면 한 번 발생한 브로드캐스트 패킷이 양쪽 브리지를 통해 네트워크를 계속 뺑뺑 돌게 되는 루핑이 발생하게 됩니다. 루핑이 발생되면 다른 데이터를 전송할 수가 없게 됩니다. 따라서 네트워크가 무용지물 상태로 빠지게 됩니다.
그렇다면 루핑은 어떻게 하면 막을 수 있을까요?
자동으로 루핑을 막아주는 알고리즘이 필요한데 이 알고리즘을 스패닝 트리 알고리즘이라고 합니다.
정리를 하자면 브리지나 스위치에 목적지까지의 경로가 두 개 이상 존재하면 반드시 루핑이 발생하고 이를 막는 것이 스패닝 트리 알고리즘입니다.
|스패닝 트리 알고리즘
스패닝 트리 알고리즘은 루핑이 발생할 수 있는 상황을 미리 막아주는 역할을 합니다.
그건 스위치 간의 두 개의 링크 중 하나를 끊어 놓는 것입니다.
따라서 실제 링크는 두 개지만 데이터는 한쪽으로만 다니게 합니다.
그럼 루핑은 발생하지 않지만 무엇 때문에 링크를 하나 더 연결하느냐는 의문이 생길 수가 있습니다. 처음부터 하나만 연결했으면 문제가 없을텐데요.
하지만 다른 링크는 지금 사용하는 하나의 링크가 끊어졌을 때를 대비하는 겁니다.
만약 사용중인 링크가 끊어지게 되면 나머지 하나가 데이터 전송을 맡아줍니다.
즉, 스패닝 트리 알고리즘이란 스위치나 브리지에서 발생할 수 있는 루핑을 미리 막기 위해 두 개 이상의 경로가 발생하면 하나를 제외하고 나머지 경로들을 자동으로 막아두었다가 만약 기존 경로에 문제가 생기면 막아놓은 경로를 풀어서 데이터를 전송하는 알고리즘입니다.
그래서 모든 스위치는 스패닝 트리 알고리즘을 지원합니다.
스패닝 트리 알고리즘에 의해서 현재의 링크가 끊어졌을 때 대기하고 있던 다른 링크가 다시 연결을 해주는데 걸리는 시간은 약 1분이상 소요됩니다. 따라서 요즘의 스위치들은 여러 가지 다양한 기능들을 가지고서 이러한 약점을 보완하고 있습니다.
출처:시스코 네트워킹
'Network' 카테고리의 다른 글
IP주소 (0) | 2016.02.11 |
---|---|
라우팅과 스위칭의 비교 (0) | 2016.02.09 |
브리지/스위치의 기능 (0) | 2016.02.05 |
브리지 (0) | 2016.02.05 |
스위치 (0) | 2016.02.04 |