스위치: 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의 종류와 특징
- 포트 기반의 VLAN
- 처음 도입되었을 때에는 고가의 스위치를 분할해 여러 네트워크에 사용하는 것이 목적이었음
- 어떤 단말이 접속하든지 스위치의 특정 포트에 VLAN을 할당하면 해당 VLAN에 속함.
- 일반적인 대부분의 VLAN
- 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이 없어 쉬지 않고 패킷 하나가 전체 네트워크 대역폭을 차지함.
- 모든 단말이 브로드캐스트를 처리하기 위해 자원을 투입하면 스위치-단말 간 통신이 거의 불가한 상태가 됨
- 이런 상황이 지속되는 경우
- 네트워크에 접속된 단말의 속도가 느려짐
- 네트워크 접속 속도도 느려짐
- 네트워크에 설치된 스위치의 모든 LED가 동시에 빠른 속도로 깜빡임
3.1.2. 스위치 MAC 러닝 중복 문제
- 루프를 돌게 되면 동일한 MAC 주소가 여러 포트에서 학습이 되는 상황이 발생
- 이러면 MAC 주소 테이블이 반복 갱신되어 정상적으로 동작하지 않음
- 이 현상을 MAC 어드레스 플래핑(MAC Address Flapping)이라 함.
- 이런 현상이 발생하면 포트를 강제로 셧다운하는 방법을 쓰긴 하지만 효율적이지 않아 다른 방법이 필요함
그래서 루프를 자동 감지해 포트를 차단하고
장애 때문에 우회로가 없을 때 차단된 포트를 스위치 소스로 풀어주는
스패닝 트리 프로토콜(STP)가 개발되었다
3.2 STP
- 루프를 확인하고 적절히 포트를 사용하지 못하게 만들어 루프를 예방하는 매커니즘
- “뿌리부터 가지까지 루프가 생기지 않도록” 유지하는 것이 목적
- 토폴로지: 네트워크 장치들이 어떻게 연결되고 동작하는 구조를 나타내는 개념
- BPDU(Bridge Protocol Data Unit)
- 스위치 간에 정보를 전달하고 정보를 이용해 전체 네트워크 트리를 만들어 루프 구간을 확인하는 프로토콜
- 스위치가 갖고 있는 ID와 같은 고유값이 존재, 이를 스위치 간 서로 교환하면서 루프를 파악하여 예방
3.2.1. 스위치 포트의 상태 및 변경 과정
- STP가 동작 중인 스위치에서는 루프 예방을 위해 신규 스위치 연결 시 트래픽을 우선 차단함.
- 이후 BPDU를 기다려 학습하고 구조를 파악한 후, 트래픽을 흘리거나 루프 구조인 경우 차단 상태를 유지함
- 해당 과정에서의 스위치 포트 4가지 상태
더보기
- Blocking
- 패킷 데이터를 차단한 상태로 BPDU를 기다림
- Max Age(20s) 동안 BPDU를 받지 못하거나 후순위 BPDU를 받는 경우 리스닝 상태로 변경
- BPDU 기본 교환 주기 2초, 10번의 BPDU를 기다림
- Listening
- 해당 포트가 전송 상태로 변경되는 것을 결정하고 준비하는 단계
- 자신의 BPDU 정보를 전송하며 총 15초 동안 대기
- Learning
- 해당 포트를 포워딩하기로 결정
- 패킷 포워딩이 일어날 때 스위치가 동작하도록 MAC 주소를 러닝하고 총 15초 동안 대기
- Forwarding
- 패킷을 포워딩하는 단계, 정상적인 통신 가능
- 스위치에 신규 장비가 붙을 시 약 50여 초 간의 통신 진행
- 이중화된 링크 절체(전환)도 STP 동작대로 진행
3.2.2. STP 동작 방식
- 네트워크 상 뿌리가 되는 가장 높은 스위치를 뽑아 모든 BPDU가 그 스위치를 통해 교환되도록 하는데 그 스위치를 루트 스위치라 부름
- 루트 스위치 선정
- 모든 스위치가 처음엔 자신을 루트 스위치로 인식함.
- BPDU를 통해 2초마다 자신이 루트 스위치임을 광고
- 새로운 스위치가 들어오면 서로 교환된 BPDU에 있는 브릿지 ID값을 비교
- 브릿지 ID값이 더 적은 스위치를 루트 스위치로 선정, 해당 스위치가 자신이 루트 스위치라고 적은 BPDU를 다른 스위치 쪽으로 보냄
- STP 동작 과정
- 하나의 루트 스위치 선정
- 루트 스위치를 제외한 스위치에서 하나의 루트 포트를 선정
- 루트 브릿지로 가는 경로가 가장 짧은 포트를 루트 포트라 함.
- 루트 브릿지에서 보낸 BPDU를 받는 포트
- 하나의 세그먼트에 지정 포트를 선정
- 스위치 - 스위치 포트는 하나의 지정 포트를 선정
- 스위치 간 연결에서 이미 루트 포트로 선정된 경우, 반대쪽이 지정 포트로 선정되어 양쪽 모두 포워딩 상태
- 스위치 간 연결에서 아무도 루트 포트가 아닌 경우, 한쪽은 지정 포트로 선정, 다른 쪽은 대체 포트가 되어 차단 상태가 됨
- 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)
'[컴퓨터 과학자 스터디] > 네트워크' 카테고리의 다른 글
로드 밸런서/방화벽: 4계층 장비(세션 장비) (1) | 2024.10.24 |
---|---|
라우터/L3 스위치: 3계층 장비 (0) | 2024.10.23 |
네트워크 통신하기 (2) | 2024.10.16 |
네트워크 연결과 구성 요소 (2) | 2024.10.14 |
네트워크 시작하기 (1) | 2024.10.13 |
블로그의 정보
프리니의 코드저장소
Frinee