스위치는 네트워크 중간에서 패킷을 받아 필요한 곳에만 보내주는 네트워크 중재자 역할을 합니다
스위치는 아무 설정 없이 네트워크에 연결해도 MAC 주소를 기반으로 패킷을 전달하는 기본 동작을 수행할 수 있습니다
MAC 주소를 인식하고 패킷을 전달하는 스위치의 기본 동작 외에도 한 대의 장비에서 논리적으로 네트워크를 분리할 수 있는 VLAN 기능과 네트워크 루프를 방지하는 스패닝 트리 프로토콜(STP)과 같은 기능을 기본적으로 가지고 있습니다
1. 스위치 장비 동작
스위치는 네트워크에서 통신을 중재하는 장비입니다
스위치의 핵심 역할은 누가 어느 위치에 있는지 파악하고 실제 통신이 시작되면 자신이 알고 있는 위치로 패킷을 정확히 전송하는 것입니다
이런 동작은 스위치가 2계층 주소를 이해하고 MAC 주소 테이블을 갖고 있어서 가능합니다
패킷의 헤더 안에 있는 2계층 목적지 주소를 확인하고 MAC 주소 테이블에 해당 주소가 어느 포트에 있는지 확인해 해당 패킷을 그 포트로만 전송합니다
스위치의 동작 방식은 3가지로 정리할 수 있습니다
플러딩
스위치는 부팅하면 네트워크 관련 정보가 아무 것도 없습니다
이때 스위치는 네트워크 통신을 중재하는 자신의 역할을 하지 못하고 허브처럼 동작합니다
즉, 모든 포트로 패킷을 흘리는 동작 방식을 플러딩이라고 합니다
패킷이 들어오면 도착지 MAC 주소를 확인하고 자신이 갖고 있는 MAC 주소 테이블에 해당 MAC 주소가 있는지 확인합니다
없으면 모든 포트에 같은 내용의 패킷을 전송합니다
어드레스 러닝
MAC 주소 테이블을 만들고 유지하는 과정을 어드레스 러닝이라고 합니다
어드레스 러닝은 패킷의 출발지 MAC 주소 정보를 이용합니다
스위치는 MAC 주소 학습하는 것 외에도 사전에 미리 정의된 MAC 주소 정보를 가지고 있습니다 이런 주소는 패킷을 처리하기 위한 주소가 아니라 대부분 스위치 간 통신을 위해 사용되는 주소입니다
포워딩/필터링
패킷이 스위치에 들어온 경우, MAC 테이블과 비교해 맞는 정보가 있으면 해당 포트로 패킷을 포워딩합니다
이때 다른 포트로는 해당 패킷을 보내지 않으므로 이 동작을 필터링이라고 합니다
일반적인 유니캐스트에 대해서만 포워딩과 필터링 작업을 수행합니다
2. VLAN
하나의 스위치에서 여러 개의 네트워크를 나누어 사용할 수 있는 가상화 기술입니다
VLAN 이란?
VLAN은 물리적 배치와 상관없이 LAN을 논리적으로 분할, 구성하는 기술입니다
VLAN을 사용하면 물리적 구성과 상관없이 네트워크를 분리할 수 있고 물리적으로 다른 층에 있는 단말이 하나의 VLAN을 사용해 동일한 네트워크로 묶을 수 있습니다
VLAN의 종류와 특징
VLAN 할당 방식에는 포트 기반의 VLAN과 MAC 주소 기반의 VLAN이 있습니다
VLAN 개념이 처음 도입되었을 때는 스위치가 고가였고 여러 허브를 묶는 역할을 스위치가 담당했으므로 스위치를 분할해 여러 네트워크에 사용하는 것이 VLAN 기능을 적용하는 목적이었습니다
스위치를 논리적으로 분할해 사용하는 것이 목적인 VLAN을 포트 기반 LAN이라 부릅니다
스위치의 고정 포트에 VLAN을 할당하는 것이 아니라 스위치에 연결되는 단말의 MAC 주소를 기반으로 VLAN을 할당하는 기술을 MAC 기반 VLAN이라고 부릅니다
VLAN 모드(Trunk/Access) 동작 방식
VLAN이 다르면 별도의 분리된 스위치에 연결된 것과 같으므로 VLAN 간 통신이 불가능합니다
서로 다른 VLAN과 통신을 위해서는 3계층 장비를 사용해야 합니다
스위치 포트에 VLAN을 설정하여 네트워크를 분리하면 물리적으로 스위치를 분리할 때보다 효율적으로 장비를 사용할 수 있습니다
여러 개의 VLAN이 존재하는 상황에서 스위치를 서로 연결해야 하는 경우에는 각 VLAN끼리 통신하려면 VLAN 개수만큼 포트를 연결해야 합니다
VLAN으로 분할된 스위치는 물리적인 별도의 스위치처럼 취급됩니다
이 문제를 해결하기 위한 것이 VLAN 태그 기능입니다
태그 기능은 하나의 포트에 여러 개의 VLAN을 함께 전송할 수 있게 해줍니다
이 포트를 태그(Tagged) 포트 또는 트렁크(Trunk) 포트라고 합니다
태그 포트를 사용하면 VLAN마다 통신하기 위해 필요했던 여러 개의 포트를 하나로 묶어 사용할 수 있으므로 포트 낭비 없이 네트워크를 더 유연하게 디자인할 수 있습니다
3. STP
SPoF(Single Point of Failure : 단일 장애점) : 하나의 시스템이나 구성 요소에서 고장이 발생했을 때 전체 시스템이 작동이 멈추는 요소
이런 SpoF를 피하기 위해 스위치 2대로 네트워크를 디자인하지만 두 대 이상의 스위치로 디자인하면 패킷이 네트워크를 따라 계속 전송되므로 네트워크를 마비시킬 수 있습니다
이러한 상황을 네트워크 루프라고 합니다
루프란?
네트워크에 연결된 모양이 고리처럼 되돌아오는 형태로 구성된 상황을 말합니다
루프 상황이 발생했을 때 네트워크가 마비되고 통신이 안 되는 상황이 발생합니다
대부분 브로드캐스트 스톰으로 인한 문제입니다
브로드캐스트 스톰
루프 구조로 네트워크가 연결된 상태에서 단말에서 브로드캐스트를 발생시키면 스위치는 이 패킷을 패킷이 유입된 포트를 제외한 모든 포트로 플러딩합니다
플러딩된 패킷은 다른 스위치로도 보내지고 이 패킷을 받은 스위치는 패킷이 유입된 포트를 제외한 모든 포트로 다시 플로딩합니다
루프 그조 상태에서는 이 패킷이 계속 돌아가는데 이것을 프로드캐스트 스톰이라고 합니다
브로드캐스트 스톰 상황이 발생하면
- 네트워크에 접속된 단말의 속도가 느려집니다 (많은 브로드캐스트를 처리해야 하므로 CPU 사용률이 높아짐)
- 네트워크 접속 속도가 느려집니다(거의 통신 불가능 수준)
- 네트워크에 설치된 스위치에 모든 LED들이 동시에 빠른 속도로 깜빡입니다
스위치 MAC 러닝 중복 문제
루프 구조 상태에서는 브로드캐스트뿐만 아니라 유니캐스트도 문제를 일으킵니다
같은 패킷이 루프를 돌아 도착지 쪽에서 중복 수신되는 혼란을 일으키기도 하지만 중간에 있는 스위치에서도 MAC 러닝 문제를 발생합니다
STP란?
스패닝 트리 프로토콜(Spanning Tree Protocol)은 루프를 확인하고 적절히 포트를 사용하지 못하게 만들어 루프를 예방하는 메커니즘 입니다
스패닝 트리 프로토콜을 이용해 루프를 예방하려면 전체 스위치가 어떻게 연결되는지 알아야 합니다
전체적인 스위치 연결 상황을 파악하려면 스위치 간에 정보를 전달하는 방법이 필요합니다
이를 위해 스위치는 BPDU라는 프로토콜을 통해 스위치 간에 정보를 전달하고 이렇게 수집된 정보를 이용해 전체 네트워크 트리를 만들어 루프 구간을 확인합니다
BPDU에는 스위치가 갖고 있는 ID와 같은 고유값이 들어가고 이런 정보들이 스위치 간에 서로 교환되면서 루프 파악이 가능해집니다
STP 동작방식
STP는 루프를 없애기 위해 나무가 뿌리에서 가지를 뻗어나가는 것처럼 토폴로지를 구성합니다
스패닝 트리 프로토콜은 루프를 예방하기 위해 다음과 같이 동작합니다
- 하나의 루트 스위치를 선정
- 루트가 아닌 스위치 중 하나의 루트 포트를 선정
- 하나의 세그먼트에서 하나의 지정포트를 선정
향상된 STP(RSTP, MST)
RSTP
스패닝 트리 프로토콜은 이중화된 스위치 경로 중 정상적인 경로에 문제가 발생할 경우, 백업 경로를 활성화하는 데 30~50초가 걸립니다
이렇게 백업 경로를 활성화하는 데 시간이 너무 오래 걸리는 문제를 해결하기 위해 RSTP가 개발되었습니다
RSTP는 2~3초로 절체 시간이 짧아 일반적인 TCP 기반 애플리케이션이 세선을 유지할 수 있게 됩니다
MST
여러 개의 VLAN을 그룹으로 묶고 그룹마다 별도의 스패닝 트리가 동작합니다
이 경우, PVST보다 훨씬 적은 스패닝 트리 프로토콜 프로세스가 돌게 되고 PVST의 장점인 로드 셰어링 기능도 함께 사용할 수 있습니다
'네트워크' 카테고리의 다른 글
[네트워크 입문] 5. 라우터/L3 스위치 : 3계층 장비 (0) | 2021.08.19 |
---|---|
[네트워크 입문] 3. 네트워크 통신하기 (0) | 2021.08.06 |
[네트워크 입문] 2. 네트워크 연결과 구성 요소 (0) | 2021.07.31 |
[네트워크 입문] 1. 프로토콜, OSI 7계층 (0) | 2021.07.31 |
댓글