[Network] 네트워크 2계층 스위치 이론 정리(L2 Switch, VLAN, STP, RSTP)
[Network] 네트워크 2계층 스위치 이론 정리(L2 Switch, VLAN, STP, RSTP)
L2 스위치는 MAC 주소를 인식 후 패킷을 전달하는 역할을 수행하며 논리적으로 네트워크를 분리 시키는 VLAN, 루프를 방지시키는 스패닝 트리(STP) 등의 기능이 있습니다.
프로토콜에서 사용하는 데이터의 단위를 PDU(Protocol Data Unit)라고 부르는데, 각 계층에서는 이러한 PDU를 부르는 용어들은 아래와 같습니다.
- 1계층(Physical Layer) : 비트(Bits)
- 2계층(Data Link Layer) : 프레임(Frame)
- 3계층(Network Layer) : 패킷(Packet)
- 4계층(Transport Layer) : 세그먼트(Segment)
- 5~7계층(Seession, Presentation, Application Layer) : 데이터(Data)
A. L2 스위치의 동작 방식
L2 스위치의 동작 방식은 크게 3가지로 나눌 수 있습니다.
- 플러딩(Flooding)
☞ 스위치가 MAC 주소 테이블에 정보가 없을 때, 패킷을 모든 포트로 전송합니다 - 어드레스 러닝(Address Lerning)
☞ 스위치에 들어오는 패킷의 출발지 MAC 주소를 학습하고 이를 MAC 주소 테이블에 어떤 포트에서 MAC 주소가 들어왔는지 기록합니다. - 포워딩/필터링(Forwarding/Filtering)
☞ 패킷이 들어올 경우 도착지 MAC 주소를 확인하여 MAC 주소 테이블에 있는 주소라면 해당 포트로 패킷을 포워딩(1:1전달)을 합니다. 이때, 다른 포트로는 패킷을 보내지 않으므로 필터링이라고 부릅니다.
※ 실제 통신에서는 ARP에 의해 플러딩될 일이 없기 때문에 플러딩이 발생한다면 스위치가 비정상적인 동작을 수행하거나, 주변에서 공격이 발생중일 확률이 높습니다. (ex. ARP Poisoning)
B. VLAN (Virual Local Area Network)
VLAN은 스위치의 물리적인 배치와 상관 없이 논리적으로 네트워크를 분리할 수 있는 기술입니다.
VLAN에는 크게 포트 기반과 MAC 기반으로 나눠지는데, 일반적인 상황에서는 대부분 포트 기반 VLAN이 사용되며 단말의 자리 이동이 많을 경우 MAC 기반 VLAN이 사용됩니다.
VLAN 모드(Trunk/Access)를 통해 각각의 포트에 VLAN을 설정하고 서로 다른 VLAN일 경우 포트간 통신을 할 수 없게 만드는데, 이러한 설정을 할 경우 ARP가 다른 VLAN을 가진 포트와 통신할 수 없으므로, 서로 통신이 필요할 때는 3계층 장비를 사용하여 통신을 수행해야 합니다.
단, VLAN이 많아질 경우 장비간의 연결만으로도 많은 포트가 낭비되기 때문에 VLAN 태그 기능이 개발되었는데, 이는 하나의 포트에 여러개의 VLAN을 함께 사용할 수 있도록 해주는 기술입니다.
이러한 포트를 트렁크 (Trunk) 포트라고 부르지만 일부 벤더에서는 태그(Tagged) 포트라고 부르며, 일반적인 포트는 액세스(Access) 포트 또는 언태그(Unntagged) 포트라고 부릅니다.
C. 루프와 브로드캐스트 스톰
하나의 물리적 장비가 고장났을 때 전체 시스템이 멈춰버리는 현상(SPoF)를 막기 위해 대부분의 기업에서는 이중화 또는 다중화 네트워크를 구성하게 됩니다.
하지만 L2 스위치로 구성하게 되면 패킷이 네트워크를 따라 반복적으로 전송되는 루프(Loop)가 발생하게 되는데, 이러한 현상은 브로드캐스트 패킷이 반복적으로 순회하는 브로드캐스트 스톰(Broadcast Storm)이라고 부릅니다.
브로드캐스트 스톰이 발생할 경우 아래와 같은 현상이 지속됩니다
- 네트워크에 연결된 단말들의 속도가 느려지거나 통신 불가
- 네트워크 접속 속도가 매우 느려짐
- 브로드캐스트 스톰이 발생한 스위치들의 LED가 동시에 빠른 속도로 깜빡임
D. 스패닝트리 프로토콜(STP, Spanning Tree Protocol)
C에서 언급한 루프를 예방하기 위한 메커니즘인 STP가 개발 되었는데, 스위치는 BPDU(Bridge Protocol Data Unit) 이라는 프로토콜을 통해 스위치간의 정보를 전달&수집된 내용을 통해 네트워크 구조를 확인하고 트래픽을 흘리거나 루프가 발생할 구조일 경우 차단 상태를 유지합니다.
차단 상태에서는 아래 4가지로 구분하게 됩니다.
- Blocking : 패킷 데이터를 차단한 상태로써 상대방이 보내는 BPDU를 받을때 까지 대기
→ Max Age(20s) 동안 BDPU를 받지 못했거나 후순위 BDPU 를 받으면 리스팅 상태로 변경
→ BPDU의 기본 교환 주기는 2초이며 10번의 BPDU를 대기 - Listening : 해당 포트가 전송 상태로 변경되는 것을 결정 및 준비하는 단계, 이때부터 스위치는 자신의 BPDU 정보를 상대방에게 전송 시작
→ 15초 대기 - Learning : 해당 포트를 포워딩 하기로 결정 및 포워딩이 발생했을 때 바로 동작할 수 있도록 MAC 주소를 러닝하는 단계
→ 15초 대기 - Forwarding : 패킷을 포워딩하는 단계로써 정상적인 통신이 가능한 단계
STP는 가장 높은 스위치(Root Switch)를 선출하고 해당 스위치가 자신이 루트 스위치임을 2초마다 광고하며, 자신을 통해 모든 BPDU가 교환되도록 설정합니다.
하나의 루트 스위치를 선정 → 그 외 스위치 중 루트 스위치로 갈 수 있는 최단 포트를 선정(Root Port) → 스위치와 스위치간의 포트를 지정 포트로 선정 → 루트 포트가 없을 경우 한쪽은 지정 포트, 한쪽은 대체 포트가 되어 차단 상태로 돌입
※ 지정 포트는 루트 포트에 연결된 반대쪽 스위치의 포트라고 생각하면 이해하기 쉽습니다.
E. 향상된 STP(RSTP)
STP의 경우 포워딩 상태로 변경될 때 까지 30~50초가 소요되는데, 실제 서비스 환경에서 네트워크에 문제가 생길 경우 30~50초를 기다릴 수 없기 통신 장애가 발생 할 수 있습니다.
이러한 문제를 해결하기 위해 RSTP가 개발 되었는데, RSTP는 2~3초 정도로 시간이 매우 짧아져 TCP 기반 애플리케이션이 세션을 유지할 수 있게 되었습니다.
STP에서는 토폴로지가 변경될 경우 말단 스위치부터 루트 브릿지까지 보고를 보내고 연산 및 변경된 정보를 말단 스위치까지 정보를 보내주어야 하는 과정들이 필요했지만, RSTP는 루트 브릿지에 보고 및 전파하지 않고 토폴로지 변화에 따른 정보를 다른 브릿지에 전달하여 바로 반영될 수 있도록 변경 되었습니다.
이러한 변경은 BPDU 활용의 차이인데, STP의 경우 토폴로지 변경에 관련된 2개의 메시지(TCN, TCA BPDU)가 있지만 RSTP는 8개의 비트를 모두 활용하여 다양한 정보를 스위치와 주고 받을 수 있기 때문에 빠른 변경을 적용할 수 있게 되었습니다.