05. 스위치

YeJi Kim·2023년 1월 20일
0

네트워크

목록 보기
5/9

스위치와 브리지

  • 스위치든, 브리지든 기본적인 동작에서 별반 차이가 없다.
  • 스패닝 프로토콜에서는 브리지와 스위치의 차이가 없다.
  • 스위치와 브리지의 차이점은 앞서 정리한 내용 참고하기

스패닝 트리

  • 스패닝 트리 프로토콜(STP, Spanning Tree Protocol)이란, 스위치나 브리지에서 발생하는 루핑을 막아주기 위한 프로코콜이다.
  • 즉 스위치나 브리지 구성에서 출발지부터 목적지까지의 경로가 2개 이상이 존재할 때 1개의 경로만을 남겨두고 나머지는 모두 끊어두었다가, 사용하던 경로에 문제가 발생하면 그때 끊어두었던 경로를 하나씩 살린다.
  • 스패닝 트리 프로토콜을 이해하기 위해서는 2가지 개념을 이해할 필요가 있다.
    • 브리지 IP
      • 브리지나 스위치들이 통신할 때 서로 확인하기 위해 하나씩 가지고 있는 번호.
      • 브리지 ID는 16비트의 브리지 우선순위와 48비트의 맥 어드레스로 만들어진다.
      • 브리지 우선순위의 기본값은 중간값인 32768이다.
      • 맥 어드레스는 스위치에 고정되어 있는 값이다.
    • Path Cost
      • 브리지가 얼마나 가까이, 그리고 빠른 링크로 연결되어 있는지 알아내기 위한 값. 한 스위치에서 다른 스위치로 가는데 드는 비용.
      • 소수점이 나오지 않도록 하기 위해 IEEE에서는 각 속도마다 Path Cost 값을 정의했다.
      • Path Cost는 속도가 빠를수록 값이 작다.
  • 스패닝 트리 프로토콜의 기본적인 동작
    1. 네트워크당 하나의 루트 브리지를 갖는다.
      • 하나의 브로드캐스트 도메인에 하나씩 루트 브리지가 있다.
      • 루트 브리지란?
        • 대장 브리지. 즉, 스패닝 트리 프로토콜을 수행할 때 기준이 되는 브리지(스위치).
    2. 루트 브리지가 아닌 나머지 모든 브리지(Non Root Bridge)는 무조건 하나씩의 루트 포트를 갖는다.
      • 논 루트 브리지란?
        • 루트 브리지가 아닌 나머지 모든 브리지.
        • 이 논 루트 브리지당 하나씩 루트 포트를 가져야 한다.
      • 루트 포트란?
        • 루트 브리지에서 가장 빨리 갈 수 있는 포트. 즉, 루트 브리지 쪽에 가장 가까운 포트.
    3. 세그먼트당 하나씩의 Designated Port(지정 포트)를 갖는다.
      • 세그먼트란?
        • 브리지 또는 스위치 간에 서로 연결된 링크.
        • 즉 브리지나 스위치가 서로 연결되어 있을 때 세그먼트에서 반드시 한 포트는 지정 포트로 선출되어야 한다.
    • 마지막으로, 스패닝 트리 프로토콜에서 루트포트나 지정 포트가 아닌 나머지 모든 포트는 다 막아버린다. 즉 루트포트와 지정 포트를 뽑는 목적은 어떤 포트를 살릴지 결정하기 위한 것이다.
    • 결국 스패닝 트리 프로토콜은 위의 3가지 규칙을 적용해서 어느쪽 링크를 살려두고, 어느쪽 링크를 끊을지 결정하는 과정이다.
  • 스패닝 트리 프로토콜에서 순서 정하기
    • 누가 트리 브리지가 될지, 누가 루트 포트나 지정 포트가 될지를 정하려면 다음과 같은 4단계를 통해 어떤 순서를 정하게 된다.
      • 1단계: 누가 더 작은 Root BID를 가졌는가?
      • 2단계: 루트 브리지까지의 Path Cost 값은 누가 더 작은가?
      • 3단계: 누구의 BID(Sender BID)가 더 낮은가?
      • 4단계: 누구의 포트 ID가 더 낮은가?
    • BPDU(Bridge Protocol Data Unit)이란?
      • 브리지가 스패닝 트리 정보를 자기들끼리 주고받기 위해서 사용하는 특수한 프레임.
      • 루트 브리지의 BID인 Root BID, 루트 브리지까지 가는 경로값인 Root Path Cost, 보내는 브리지의 BID인 Sender BID, 그리고 어떤 포트에서 보냈는지를 알게 해주는 Port ID 정보 등이 실려 있다.
    • 브리지나 스위치가 부팅을 하면 이들은 각각의 포트로 BPDU를 매 2초마다 내보내면서 서로의 스패닝 트리 정보를 주고받게 된다. 즉 브리지는 이 BPDU를 서로 주고받으면서 누가 루트 브리지이고 어떤 포트가 루트 포트가 될지, 그리고 어떤 포트가 지정 포트가 될지를 결정하게 된다.
    • 브리지나 스위치가 스패닝 트리 정보를 서로주고받기 위해 BDPU를 사용한다. 이 때 어떤 BDPU가 가장 좋은 BDPU인가를 결정하기 위해 위에서 배운 4단계의 순서 정하기를 사용한다.
  • 스패닝 트리를 만드는 과정
    - 스위치에서 대장 브리지(루트 브리지) 뽑기
    - 대장 브리지를 뽑는 조건은 무조건 낮은 BID를 갖는 브리지가 대장이 된다.
    - 스위치가 부팅을 시작하면 다른 스위치의 존재를 모르기 때문에 자기 자신을 루트 브리지의 BID로 설정한다. 다른 스위치와 BPDU를 주고 받아 더 낮은 BID를 루트 브리지의 BID로 설정한다.
    - 특정한 스위치의 BID의 Bridge Priority 값을 낮게 지정해서 루트 브리지로 만들 수 있다.
    - 졸병 브리지(논 루트 브리지)의 루트 포트 선출기
    - 루트 브리지의 선출이 끝나고 루트 포트 선출이 시작된다.
    - 모든 논 루트 브리지는 반드시 한 개의 루트 포트를 갖는다.
    - 루트 포트는 루트 브리지에 Path Cost가 가장 적게 드는 포트이다.
    - 지정 포트 뽑기
    - 지정 포트를 뽑아야 스패닝 트리에서 어떤 포트를 풀어주고 어떤 포트는 막을지가 결정된다.
    - 세그먼트당 하나씩의 지정 포트를 갖는다.
    - 루트 브리지까지의 Path Cost, 즉 세그먼트 상에서 Root Path Cost를 서로 비교해서 더 작은 Root Path Cost를 가진 포트가 지정 포트로 선출된다.
    - 루트 브리지의 살아있는 모든 포트들은 언제나 데지그네이티드 포트로 선정된다.
    - 동점일 경우에는 위의 4단계를 거쳐 승자를 가린다.
    - 지정 포트를 뽑은 후 나머지 포트는 Non Designated 포트로 지정한다.

스패닝 트리 프로토콜의 5가지 상태 변화

  • Disabled: 이 상태는 포트가 고장나서 사용할 수 없거나 네트워크 관리자가 포트를 일부러 Shut Down 시켜 놓은 상태이다.
  • Blocking: 스위치를 맨 처음 켜거나 Disabled 되어 있는 포트를 관리자가 다시 살렸을 떄 그 포트는 블로킹 상태로 들어간다. 이 상태에서는 데이터 전송은 되지 않고 오직 BDPU를 주고받을 수 있다. 서로 BDPU를 주고받으면서 루트 브리지를 뽑고, 루트 포트를 뽑고, 지정 포트를 뽑고, Non Designated 포트를 지정한다.
  • Listening: 블로킹 상태에 있던 스위치 포트가 루트 포트나 지정 포트로 선정되면 포트는 바로 리스닝 상태로 넘어간다. 물론 리스닝 상태에 있던 포트도 네트워크에 새로운 스위치가 접속했거나 등의 새로운 이벤트가 발생하면 다시 블로킹 상태로 돌아가게 된다.
  • Learning: 리스닝 상태에 있던 스위치 포트가 포워딩 딜레이 디폴트 시간인 15초 동안 그 상태를 계속 유지하면 리스닝 상태는 러닝 상태로 넘어간다. 러닝 상태에서야 비로소 맥 어드레스를 배워 맥 어드레스 테이블을 만들게 된다.
  • Forwarding: 스위치 포트가 러닝 상태에서 다른 상태로 넘어가지 않고다시 포워딩 딜레이 디폴트 시간인 15초 동안 그 상태를 계속 유지하면 러닝 상태에서 포워딩 상태로 넘어가게 된다. 포워딩 상태가 되어야 스위치 포트는 드디어 데이터 프레임을 주고받을 수 있게 된다. 즉 블로킹 상태에 있던 포트가 리스닝과 러닝을 거쳐 포워딩 상태로 오려면 디폴트 포워딩 딜레이인 15초가 2번 지난 30초가 소요된다.

스패닝 트리의 변화

  • 관련 용어
    • Hello Time: 루트 브리지가 얼마 만에 한 번씩 헬로 BDPU를 보내는지에 대한 시간이다. 즉 루트 브리지는 자신에게 연결된 브리지들에게 헬로 BDPU를 헬로타임마다 한 번씩 보내게 되는데, 디폴트 헬로타임은 2초이다.
    • Max Age: 브리지들이 루트 브리지들로부터 헬로패킷을 받지 못하면 맥스 에이지 시간 동안 기다린 후 스패닝 트리 구조 변경을 시작한다. 즉 맥스 에이지란, 브리지들이 루트 브리지로부터 얼마 동안 헬로패킷을 받지 못했을 때 루트 브리지가 죽었다고 생각하고 새로운 스패닝 트리를 만들기 시작하는가에 대한 시간이다.
    • Forwarding Delay: 브리지 포트가 블로킹 상태에서 포워딩 상태로 넘어갈 때까지 걸리는 시간이다.
  • 브리지에 문제가 생겼을 때 스패닝 트리의 변화 과정
    • 루트 브리지는 자기와 연결된 나머지 브리지들에게 헬로패킷을 매 2초마다 뿌리고, 이 패킷을 받은 브리지들은 자신의 데지그네이티드 포트로 다시 그 헬로패킷을 전달한다.
    • 이때 갑자기 스위치 A와 스위치 C 간의 링크에 문제가 생겨 링크가 끊어졌다. 이렇게 되면 스위치 C는 루트 브리지로부터 헬로패킷을 받지 못한다. 아직 맥스 에이지(Max Age) 시간이 지나지 않았기 때문에, 스위치 C가 2초에 한 번씩 루트 브리지로부터 받아야 하는 헬로패킷을 받지 못하더라도 아직은 아무 일도 일어나지 않는다.
    • 스위치 A와의 연결이 끊겨서 핼로 패킷을 못받게 되자, 스위치 C는 스위치 B에서 전달해 준 헬로패킷을 자신의 E1 포트로 받아들여 E1 포트를 루트 포트로 세팅하게 된다.
    • 물론 Non Designated 포트로 블로킹 상태에 있던 스위치 C의 E1 포트를 루트 포트로 선정했다고 해서 바로 포워딩 상태로 넘어가는 것은 아니다. 디폴트 포워딩 딜레이 시간인 15초를 먼저 리스닝 상태에서 기다리고, 다시 한 번 러닝 상태에서 15초를 추가로 기다린 후 드디어 데이터 전송이 가능한 포워딩 상태로 넘어가게 된다. 이때 기존의 루트 포트로 포워딩 상태였던 스위치 C의 E0 포트는 블로킹이 된다.

[참고자료]
후니의 쉽게 쓴 CISCO 네트워킹(저자: 진강훈, 출판사: 성안당)

profile
이전의 기록들 👉 https://blog.naver.com/reviewerkyj

0개의 댓글