Frinee의 코드저장소

스위치: 2계층 장비

by Frinee
이 글은 고재성, 이상훈 저 - "IT 엔지니어를 위한 네트워크 입문"를 공부하고 정리하여 작성하였습니다.

 

0. 스위치의 역할

  • 스위치는 2계층 주소인 MAC 주소를 기반으로 동작
  • 네트워크 중간에서 패킷을 받아 필요한 곳에만 보내주는 역할을 수행

패킷? 프레임? 그게 뭐임

더보기
  • 각 계층에서 헤더와 데이터를 합친 부분을 PDU라 함.
    • 1계층: 비트(bits)
    • 2계층: 프레임(Frame)
    • 3계층: 패킷(Packet)
    • 4계층: 세그먼트(Segment)
    • 애플리케이션 계층: 데이터(Data)

 

1. 스위치 장비 동작

  • 스위치가 없던 이전엔 패킷 전송 시 서로 경합하면서 성능 저하가 발생
  • 패킷 전송 시 간섭 없이 통신하도록 하기 위해 등장
  • 여러 단말이 한꺼번에 통신할 수 있고 서로 충돌하거나 낭비되는 문제가 해결되어 통신효율이 향상
  • 역할: 누가 어느 위치에 있는지 파악하고 자신이 알고 있는 위치로 패킷을 정확히 전송하는 역할
  • MAC 주소 테이블: 단말의 MAC 주소와 인터페이스 정보를 매핑된 테이블
  • 패킷의 헤더 안에 있는 2계층 목적지 주소를 확인 후, MAC 주소 테이블에서 해당 주소의 포트 번호를 확인하여 해당 포트로 전송
  • MAC 주소 테이블에 없는 도착지 주소가 스위치로 들어오는 경우 전체 포트로 패킷을 전송
  • 스위치의 동작 방식은 크게 플러딩(Flooding), 어드레스 러닝, 포워딩/필터링으로 나뉨

1.1. 플러딩(Flooding)

  • 부팅했을 땐 정보가 없는 상황이고 이때에는 중재할 수 없고 허브(Hub)처럼 동작하는 방식
  • 패킷이 들어온 포트를 제외한 모든 포트로 패킷을 전달
  • 스위치는 패킷이 들어오면 도착지 MAC 주소를 확인하고 자신이 가진 MAC 주소 테이블과 비교
  • MAC 주소 테이블에 없는 경우 모든 포트에 패킷을 전송

비정상 플러딩?

더보기
  • 사실 플러딩 = 스위치가 제 기능을 못한다는 의미
  • 스위치가 플러딩을 하게 해서 패킷 정보를 가로채는 수법의 해킹도 존재
  • 엉뚱한 MAC 주소를 학습시켜 MAC 테이블을 꽉차게 하여 플러딩을 유도
  • 이외에도 ARP 포이즈닝 기법을 이용해 모니터링해야 할 IP의 MAC 주소가 공격자 자신인 것처럼 속여 통신을 받는 방법도 사용

 

1.2. 어드레스 러닝

  • 스위치가 원하는 포트로 포워딩하는 동작을 수행하기 위해 MAC 주소 테이블을 만들고 유지하는 과정
  • 패킷이 특정 포트에 들어올 때, 패킷의 출발지 MAC 주소와 포트 번호를 기록
  • 출발지의 MAC 주소 정보를 이용하므로 브로드캐스트나 멀티캐스트에 대한 MAC 주소를 학습할 수 없음
    • 두 가지 모두 목적지 MAC 주소 필드만 사용하기 때문
  • 사전 정의된 MAC 주소 테이블
    • 스위치는 어드레스 러닝 외에도 사전에 미리 정의된 MAC 주소 정보를 갖고 있음
    • 이 정보는 스위치 간 통신을 위한 주소이고 인접 포트 정보가 없거나 CPU 혹은 관리 모듈을 지칭하는 용어로 표기
    • show mac address-table 명령어를 통해 MAC 주소 테이블을 확인

1.3. 포워딩/필터링

  • 패킷이 스위치에 들어온 경우 도착지 MAC 주소를 확인했을 때 맞는 정보가 있으면 해당 포트로 패킷을 포워딩함.
  • 이때 다른 포트로는 패킷을 보내지 않기 때문에 이 동작을 필터링이라고 함.
  • 통신이 다른 포트에 영향이 가지 않기 위해 다른 포트에서 기존 통신작업으로부터 독립적으로 수행할 수 있음.
  • 스위치는 일반적인 유니캐스트로 포워딩과 필터링 작업을 수행
  • BUM 트래픽(브로드캐스트, 언노운 유니캐스트, 멀티캐스트)에서는 다르게 동작
    • 출발지 MAC 주소로 브로드캐스트나 멀티캐스트 모두 출발지가 사용되지 않으므로 모두 플러딩(Flooding)함.
    • 언노운 유니캐스트도 MAC 주소 테이블에 없는 주소이므로 동일하게 플러딩

LAN 에서의 ARP - 스위치 동작

더보기
  • 이더넷 - TCP/IP에서는 스위치가 플러딩하는 경우는 거의 없음
  • 단말의 MAC 주소를 알아내기 위해 ARP 브로드캐스트가 먼저 실행
  • ARP를 이용한 MAC주소 습득 과정에서 이미 출발지-목적지 MAC 주소 습득이 가능
  • 실제 유니캐스트가 시작될때는 이미 만들어진 MAC 주소 테이블로 패킷 포워딩/필터링

 

2. VLAN

  • 물리적 배치와 상관없이 LAN을 논리적으로 분할, 구성하는 기술
  • 단말들의 성능 향상, 보안 향상을 위한 차단 용도, 서비스 성격에 따른 정책 적용 등의 이유로 네트워크를 분리함.
  • VLAN을 설정하면 유니캐스트 뿐만 아니라 브로드캐스트로도 다른 VLAN 간 통신이 불가능함.
  • 다른 VLAN 간 통신을 위해선 3계층 장비가 필요함.
  • VLAN을 사용하면 물리적으로 다른 층에 있는 단말끼리 동일한 네트워크로 묶을 수 있음.

2.1. VLAN의 종류와 특징

  1. 포트 기반의 VLAN
    • 처음 도입되었을 때에는 고가의 스위치를 분할해 여러 네트워크에 사용하는 것이 목적이었음
    • 어떤 단말이 접속하든지 스위치의 특정 포트에 VLAN을 할당하면 해당 VLAN에 속함.
    • 일반적인 대부분의 VLAN
  2. MAC 주소 기반의 VLAN
    • 사용자들의 자리 이동이 많아지면서 MAC 기반 VLAN이 개발됨.
    • 스위치에 연결하는 단말의 MAC 주소를 기반으로 VLAN을 할당

2.2. VLAN 모드(Trunk/Access) 동작 방식

  • 서로 다른 VLAN 간 통신을 위해선 3계층 장비를 사용해야 함.
  • 스위치 포트에 VLAN을 설정하여 네트워크를 분리하면 물리적으로 분리할 때보다 효율적으로 사용할 수 있음.
  • 여러 개의 VLAN이 존재하는 상황에서 스위치를 서로 연결해야 하는 경우
    • VLAN 개수만큼의 포트가 필요함
    • 이때 VLAN으로 분할된 스위치는 물리적인 별도의 스위치처럼 취급됨
    • 장비 간 연결만으로 많은 포트가 낭비됨
  • 이 문제를 해결하기 위해 하나의 포트에 여러 개의 VLAN을 함께 전송할 수 있는 기능이 생김
  • 이 기능을 태그(Tagged) 포트 또는 트렁크(Trunk) 포트라고 함.
  • 여러개의 VLAN을 동시에 전송하는 태그 포트는 이더넷 프레임 중간에 VLAN ID 필드를 넣어 정보를 이용

 

태그 포트가 일반적인 용어, 트렁크 포트는 시스코 사에서 사용하는 명칭
  • 태그 포트 기능이 생기면서 MAC 주소 테이블에도 VLAN 필드가 추가됨.
  • 반대로 일반적인 포트를 언태그(Untagged) 혹은 액세스(Access) 포트라고 함.
  • 태그 포트로 패킷이 들어올 경우, 태그를 벗겨내면서 태그된 VLAN 쪽으로 패킷을 전송
  • 서버와의 연결된 포트도 가상화 서버가 연결될 때에도 태그 포트로 설정함.

 

3. STP

  • SPoF(Single Point of Failure): 하나의 시스템이나 구성 요소에서 고장이 발생할 때, 전체 시스템의 동작이 멈추는 것
  • SPoF로 인한 장애를 피하기 위해 네트워크에서는 이중화, 다중화된 네트워크를 설계하고 구성함.
  • 그렇지만 SPoF를 피하기 위해 스위치 두 대로 네트워크를 구성하면 패킷이 네트워크를 따라 계속 전송되는 네트워크 루프(Network Loop)를 발생시켜 네트워크를 마비시킴

3.1. Loop

  • 네트워크에 연결된 모양이 고리처럼 되돌아오는 형태로 구성된 상황
  • 루프가 발생하면 네트워크가 마비되고 통신이 안되는 상황이 발생

3.1.1. 브로드캐스트 스톰

  • 네트워크가 루프인 상태에서 단말에 브로드캐스트를 발생시키면 패킷이 계속 돌면서 무한 플러딩을 시전
  • 2계층에는 3계층처럼 TTL이 없어 쉬지 않고 패킷 하나가 전체 네트워크 대역폭을 차지함.
  • 모든 단말이 브로드캐스트를 처리하기 위해 자원을 투입하면 스위치-단말 간 통신이 거의 불가한 상태가 됨
  • 이런 상황이 지속되는 경우
    1. 네트워크에 접속된 단말의 속도가 느려짐
    2. 네트워크 접속 속도도 느려짐
    3. 네트워크에 설치된 스위치의 모든 LED가 동시에 빠른 속도로 깜빡임

3.1.2. 스위치 MAC 러닝 중복 문제

스위치 MAC 러닝 중복 문제

  • 루프를 돌게 되면 동일한 MAC 주소가 여러 포트에서 학습이 되는 상황이 발생
  • 이러면 MAC 주소 테이블이 반복 갱신되어 정상적으로 동작하지 않음
  • 이 현상을 MAC 어드레스 플래핑(MAC Address Flapping)이라 함.
  • 이런 현상이 발생하면 포트를 강제로 셧다운하는 방법을 쓰긴 하지만 효율적이지 않아 다른 방법이 필요함
그래서 루프를 자동 감지해 포트를 차단하고
장애 때문에 우회로가 없을 때 차단된 포트를 스위치 소스로 풀어주는
스패닝 트리 프로토콜(STP)가 개발되었다 

 

3.2 STP

  • 루프를 확인하고 적절히 포트를 사용하지 못하게 만들어 루프를 예방하는 매커니즘
  • “뿌리부터 가지까지 루프가 생기지 않도록” 유지하는 것이 목적
  • 토폴로지: 네트워크 장치들이 어떻게 연결되고 동작하는 구조를 나타내는 개념
  • BPDU(Bridge Protocol Data Unit)
    • 스위치 간에 정보를 전달하고 정보를 이용해 전체 네트워크 트리를 만들어 루프 구간을 확인하는 프로토콜
    • 스위치가 갖고 있는 ID와 같은 고유값이 존재, 이를 스위치 간 서로 교환하면서 루프를 파악하여 예방

3.2.1. 스위치 포트의 상태 및 변경 과정

  • STP가 동작 중인 스위치에서는 루프 예방을 위해 신규 스위치 연결 시 트래픽을 우선 차단함.
  • 이후 BPDU를 기다려 학습하고 구조를 파악한 후, 트래픽을 흘리거나 루프 구조인 경우 차단 상태를 유지함
  • 해당 과정에서의 스위치 포트 4가지 상태
더보기
  1. Blocking
    • 패킷 데이터를 차단한 상태로 BPDU를 기다림
    • Max Age(20s) 동안 BPDU를 받지 못하거나 후순위 BPDU를 받는 경우 리스닝 상태로 변경
    • BPDU 기본 교환 주기 2초, 10번의 BPDU를 기다림
  2. Listening
    • 해당 포트가 전송 상태로 변경되는 것을 결정하고 준비하는 단계
    • 자신의 BPDU 정보를 전송하며 총 15초 동안 대기
  3. Learning
    • 해당 포트를 포워딩하기로 결정
    • 패킷 포워딩이 일어날 때 스위치가 동작하도록 MAC 주소를 러닝하고 총 15초 동안 대기
  4. Forwarding
    • 패킷을 포워딩하는 단계, 정상적인 통신 가능
  • 스위치에 신규 장비가 붙을 시 약 50여 초 간의 통신 진행
  • 이중화된 링크 절체(전환)도 STP 동작대로 진행

3.2.2. STP 동작 방식

  • 네트워크 상 뿌리가 되는 가장 높은 스위치를 뽑아 모든 BPDU가 그 스위치를 통해 교환되도록 하는데 그 스위치를 루트 스위치라 부름
  • 루트 스위치 선정
    1. 모든 스위치가 처음엔 자신을 루트 스위치로 인식함.
    2. BPDU를 통해 2초마다 자신이 루트 스위치임을 광고
    3. 새로운 스위치가 들어오면 서로 교환된 BPDU에 있는 브릿지 ID값을 비교
    4. 브릿지 ID값이 더 적은 스위치를 루트 스위치로 선정,  해당 스위치가 자신이 루트 스위치라고 적은 BPDU를 다른 스위치 쪽으로 보냄
  • STP 동작 과정
    1. 하나의 루트 스위치 선정
    2. 루트 스위치를 제외한 스위치에서 하나의 루트 포트를 선정
      • 루트 브릿지로 가는 경로가 가장 짧은 포트를 루트 포트라 함.
      • 루트 브릿지에서 보낸 BPDU를 받는 포트
    3. 하나의 세그먼트에 지정 포트를 선정
      • 스위치 - 스위치 포트는 하나의 지정 포트를 선정
      • 스위치 간 연결에서 이미 루트 포트로 선정된 경우, 반대쪽이 지정 포트로 선정되어 양쪽 모두 포워딩 상태
      • 스위치 간 연결에서 아무도 루트 포트가 아닌 경우, 한쪽은 지정 포트로 선정, 다른 쪽은 대체 포트가 되어 차단 상태가 됨
      • BPDU가 전달되는 포트

스패닝 트리 프로토콜 사용 시 대안(Port Fast)

더보기
  • STP가 동작하면 시간 지연의 문제가 있어 서버나 PC로 연결되는 포트는 이 동작을 생략하거나 빠르게 포워딩 상태로 변경
  • 이 경우 포트 패스트로 설정하면 BPDU 대기, 습득 과정을 생략하고 포워딩함.

3.3. 향상된 STP(RSTP, MST)

  • TCP 기반 애플리케이션은 네트워크가 끊겼을 때는 STP 기반 네트워크에서 기다리지를 못함.
  • 여러 개의 VLAN이 있는 경우 각 VLAN 별로 STP를 실행하면 부하가 발생하는 문제도 있음.

3.3.1. RSTP

  • 2~3초로 절체 시간이 짧아 일반적인 TCP 기반 애플리케이션이 세션을 유지할 수 있음
  • BPDU 메시지 형식이 다양하여 여러가지 상태 메시지를 교환할 수 있음
  • RSTP는 8개 비트를 모두 활용해 다양한 정보를 주위 스위치와 교환할 수 있음
  • 기존 STP는 토폴로지가 변경되면 말단 스위치 - 루트 스위치를 왕복하는 복잡한 과정이 존재
  • 하지만 RSTP는 토폴로지가 변경되면 스위치 자신이 모든 네트워크에 토폴로지 변경을 전파함.

3.3.2. MST

  • CST(Common Spanning Tree)
    • VLAN 개수와 상관없이 스패닝 트리 한 개만 동작
    • 스위치 부하가 적지만 루프가 생기는 토폴로지에서 자원을 효율적으로 사용하지 못함.
    • 그리고 포트가 하나이기 때문에 최적의 경로를 사용하지 못하는 문제가 있음.
  • PVST(Per Vlan Spanning Tree)
    • CST의 문제를 해결하기 위해 개발되었고 VLAN마다 다른 프로세스가 동작하게 하여 최적의 경로를 디자인할 수 있게 됨
    • 그리고 VLAN마다 별도의 포트를 지정해 네트워크 로드를 셰어링할 수 있음
    • STP 자체가 스위치에 부담을 많이 주는 프로토콜인데 (2초마다 교환) 모든 VLAN마다 별도의 STP를 유지해야 하는 부담이 있음.
  • MST(Multiple Spanning Tree)
    • CST와 PVST의 단점을 보완하기 위해 개발
    • 여러 개의 VLAN을 그룹으로 묶고 그 그룹마다 별도의 스패닝 트리가 동작
    • PVST보다 훨씩 적은 STP 프로세스가 돌게 되고 PVST의 장점인 로드 셰어링 기능도 사용
    • 대체 경로의 개수나 용도에 따라 STP 프로세스 개수를 정의함.
  • STP의 대안
    • STP는 스위치 부담이 많은 프로토콜이기 때문에 PortFast, UplinkFast, BackbonFast 등 다수 기능이 있지만 잘못 쓰면 장애 발생에 원인이 되기도 함
    • 그래서 근본적으로 대체하기 위해 네트워크를 잘게 쪼개 디자인하거나 대체재를 사용하는 경우가 많음
    • 이런 대체재도 대부분 모두 호환되는 것이 아니라 제작업체 내에서만 동작하거나 호환성이 없는 경우도 많음
      • SLPP, Extreme STP, Loop Guard, BPDU Guard 등

스위치는 관리용 컨트롤 플레인과 포워딩하는 데이터 플레인으로 나뉨.
STP나 스위치 원격관리용 텔넷, SSH, 웹 등의 서비스는 컨트롤 플레인에서 수행

스위치는 MAC 주소만 이해할 수 있지만 일정 규모 이상의 네트워크에선 관리 목적으로 대부분 IP주소가 할당됩니다.

 

 

자료

  • IT 엔지니어를 위한 네트워크 입문 (고재성, 이상훈 저, 2020.10)

블로그의 정보

프리니의 코드저장소

Frinee

활동하기