[Network] 스위치와 브릿지를 기깔나게 구분해보자
2025.07.08 내용 업데이트
네트워크 공부를 하다보면 인프라를 구성하는 장비에 대해 필연적으로 접하게 된다. 처음에는 '허브'와 '스위치'를 어떻게 구분할 수 있는지, 뭐가 다른건지에 대한 고민이 굉장히 컸던 기억이 있다. 우리가 '허브'라고 하면 보통 더미허브(Dummy Hub)를 의미하는 경우가 많다. 이 포스트에서 언급하는 허브도 모두 더미허브를 의미한다.
허브와 스위치를 구분하기 위해서는 OSI 7 Layer 개념을 가져올 필요가 있다. 허브는 물리 계층이 L1 수준에서 작동하는 리피터(Repeater)이다. 수신한 데이터를 그대로 복제하고, 내보낼 수 있는 모든 포트로 브로드캐스트하는 방식으로 작동한다. 다시 말해, 연결된 장치의 MAC 주소를 관리하거나 인식하지 못하며, 동시에 여러 포트에서 데이터가 전송될 경우에는 어느 위치에서든 충돌이 발생할 수 있다. 이처럼 충돌이 일어날 수 있는 구역을 하나의 Collision Domain이라고 부른다. 허브와 스위치의 Collision Domain을 도식으로 나타내면 아래의 그림과 같이 표현할 수 있다. 허브에서는 모든 포트가 오직 하나의 Collision Domain을 공유한다.
반면에, 스위치는 허브보다 똑똑하게 동작하는 친구이다. 스위치는 보통 L2에서 작동하는 것과 L3에서 작동하는 것으로 구분하는데, 여기에서는 허브와의 비교를 위해 저수준에서 동작하는 L2 레벨에서 접근해보자.
L2 스위치는 CAM Table이라는 구조를 통해, 연결된 장치의 MAC 주소를 기억하고 관리하는 기능을 탑재하고 있다. 특정 포트를 통해 트래픽이 유입되면, 이 트래픽을 송신한 장치의 MAC 주소를 파싱하고 포트 정보와 연관지어 기억한다. 이후, 해당 MAC 주소로 보내야 하는 트래픽이 유입되면, CAM Table을 확인하여, 해당 포트로만 선택적으로 티래픽을 전달할 수 있게 된다. 목적지와 연결된 포트로만 트래픽을 전송할 수 있게 된 덕분에, L2 스위치부터는 개별 포트마다 고유의 Collision Domain을 가지게 된다.
또한 허브는 보통 Half-Duplex만 지원되어 동시에 하나의 라인을 타고 양방향에서 신호를 보낼 수 없지만, 스위치에서는 Full-Duplex가 지원되기 때문에 하나의 라인을 타고 양쪽 포인트에서 동시에 신호를 보내더라도 문제없이 전달된다는 것도 차이점이다.
참고로, L3 스위치는 네트워크 계층에서 동작하다보니 IP주소라는 개념을 사용할 수 있다. ARP (Address Resolving Protocol)라고 부르는 프로토콜을 통해 작동하는데, 위의 L2 스위치에서와 유사한 방식으로 작동한다. 오고가는 패킷을 확인하여 IP주소와 MAC 주소를 파싱하여 스위치 내부에 기억해둔 다음, 특정 IP나 MAC 주소로의 전송이 필요한 패킷을 수신하면, ARP 테이블을 통해 일치하는 장치로 패킷을 전달하는 방식으로 작동한다. 참고로 ARP는 IP주소를 기반으로 MAC 주소를 탐색하는 프토로콜이며, 반대로 MAC 주소를 기반으로 IP 주소를 탐색하는 프로토콜은 Reverse를 붙여 RARP라고 부른다.
허브와 스위치는 어떻게 구분할 수 있을까?
- 허브와 스위치 & 브릿지를 구분하는 가장 중요한 요소는 Collision Domain이 어떻게 나뉘는가이다.
Collision Domain이란, 말 그대로 충돌이 발생할 수 있는 영역을 구분하기 위한 개념이다. 위에서 언급한 Half/Full Duplex처럼 여러 패킷이 동일한 라인을 통해 이동하기 때문에, 경로 상에서 서로 다른 트래픽이 동시에 지나가려고 할 때, 서로 충돌이 일어나 손실이 일어날 수 있는 영역 (Domain) 단위를 의미한다.
허브의 경우에는 어느 경로에서라도 일단 트래픽이 발생하면 모든 경로로 브로드캐스팅이 일어나기 때문에, 허브에 존재하는 모든 포트가 하나의 Collision Domain으로 묶여 있다.
하지만, 스위치나 브릿지는 트래픽을 전달해야하는 목적지를 향해서만 라우팅하기 때문에, 모든 포트가 각자 스스로의 고유한 Collision Domain을 가진다.
아래의 예시를 보며 다시 한 번 정리해보자.
우선 허브로 메시지가 도착하면 연결된 모든 경로로 브로드캐스트가 일어난다. 이 과정에서 다른 트래픽의 전송을 시도하면 충돌이 발생하게 된다. CSMA/CD에 의해 충돌이 발생했다는 사실 자체는 감지되고, 깨진 트래픽과 JAM 신호가 브로드캐스트된다. 수신한 노드 측에서 CRC 검증 오류 또는 JAM 패킷에 의해 수신한 데이터의 폐기가 일어난다.
이제 스위치의 경우를 살펴보자.
스위치에서는 유형에 따라 CAM Table 또는 ARP Table를 활용한 스위칭을 지원하기 때문에 허브에서라면 충돌이 발생할 수 있는 상황에서도 충돌이 일어나지 않는 모습을 확인할 수 있다. 따라서, 각 세그먼트가 각각의 고유한 콜리전 도메인을 가진다고 볼 수 있다. 하지만 여전히 모든 노드가 스위치를 통해 하나의 네트워크를 이루고 있기 때문에 브로드캐스트 도메인은 여전히 전체가 하나로 묶여 있다.
이제 기본적인 허브와 스위치를 구분할 수 있게 되었다. 물론 스위치라는 장비 자체가 종류에 따라 L2와 L3로 나뉘고 (L2와 L3간에 모드를 변경해 사용할 수 있는 하이브리드 방식도 존재한다;;), 스위치에 점점 다양한 기능이 추가되고, 구조도 복잡해짐에 따라 이상한 변종들이 나타나기 시작했다. 허브의 경우에도 위에서 설명한 더미허브는 더이상 잘 사용하지 않고, 간단한 스위칭을 지원하게 되면서 '스위칭 허브' 내지는 '인텔리전트 허브' 라는 이름을 달고 판매중인 제품군이 많아졌다. 혼란스럽다.
그렇다면 스위치와 브릿지는 어떻게 구분할 수 있을까?
사실 난 이 두 장비가 너무 유사하다고 생각했기 때문에, 처음 머릿속에 이 질문이 떠올랐을 때, 내 지식으로는 답을 내릴 수 없었다. 그래서 주변 사람들에게도 불어보고 전공 교수님께도 여쭤봤지만, 브릿지와 스위치를 명확하게 구분해서 답변해주는 사람을 찾아보긴 어려웠다. 처음 스위치와 브릿지가 등장할 당시에는 분명히 차이가 존재했겠지만, 윗 문단에서 말한 것처럼 브릿지와 스위치 사이의 경계가 모호해진 지금 시점에서는 둘을 크게 구분할 필요도, 의미도 거의 없을 거라는 답변만 돌아올 뿐이었다.
그럼에도 불구하고 아직까진 사람들이 분명히 이 두 용어를 구분하여 사용하고 있고, 서버/인프라에서 다루는 방화벽 등의 장비에서도 라우팅과 브릿지를 엄연히 구분해서 사용하고 있기 때문에 두 장비를 분명하게 구분지어줄 수 있을만한 특징이 있을 것이라 판단했고, 이에 대해 개인적으로 조사해본 기록을 차근차근 남겨보려고 한다.
- 1. 구현 방식의 차이
둘의 차이를 검색해보면 가장 먼저 찾아볼 수 있는 내용이 보통 스위치는 하드웨어로, 브릿지는 소프트웨어로 패킷을 처리하기 때문에 기판에 이미 모든 코드를 구워놓은 스위치가 훨씬 빠르게 작동한다는 말이다.
브릿지는 CPU가 패킷의 헤더를 읽은 다음, 펌웨어에 작성된 알고리즘대로 수신자를 특정하고 전송하는 방식으로 작동한다. 스위치는 전용 용도로 설계된 ASIC (Application-Specific Integrated Circuit) 칩에 의해 패킷 헤더 여러 개를 동시에 병렬적으로 분석하고, 회로에 구워놓은 로직에 따라 목적지로 즉시 전송할 수 있게 설계되어있다. 소프트웨어와 CPU 등의 연산 장치를 거치지 않기 때문에 훨씬 빠르게 더 많은 양의 패킷을 처리할 수 있다.
물론 스위치 사용자가 필요에 의해 설정 값을 변경하거나, 기호에 맞게 스위치의 동작 방을 변경할 수도 있다. 이러한 영역은 `Control Plane`에서 소프트웨어로 관리되고, 단지 패킷을 읽어서 어디로 라우팅할지 결정하는 영역은 `Data Plane` 영역에서 하드웨어적으로 신속하게 처리한다는 점이다.
그렇다면 거의 모든 상황에서 무조건 스위치가 유리한 것이 아닌가? 스위치를 사용하면 될텐데 왜 브릿지라는 개념이 등장하게 된 것이고 아직까지 유효한걸까? 사실 이건 선후관계가 잘못 되었다. 브릿지는 허브의 문제를 해결하기 위해 등장한 개념으로, 스위치보다 그 등장이 앞선다.
- 2. 브릿지가 등장하게 된 배경
위에서 허브로 구성된 LAN 환경은 하나의 Collision Domain을 공유하기 때문에 충돌과 혼잡이 발생할 수 있다는 사실을 알아보았다. 브릿지는 이처럼 충돌로 인해 발생하는 문제를 해결해보고자 각 세그먼트마다 Collision Domain을 분리해보자는 아이디어에서 출발했다. 초창기의 브릿지는 2포트로 구성된 단순한 구성이었다고 한다. L2 프레임을 소프트웨어적으로 읽어들이고, 헤더의 dest. MAC을 인식하여 필요한 포트만 필터링해서 전송하는 방식으로 구현함으로써 문제를 해결했다. 브릿지에 완성된 프레임이 도달하지 않는 이상 다른 포트로 전달하지 않기 때문에, 하나의 세그먼트에서 문제가 발생하더라도 다른 곳으로 전파되지 않는, 이른바 격리가 가능해졌다.
소프트웨어를 기반으로 동작하기 때문에, 프레임을 읽어들여 분석한 다음에서야 목적지로 전달하는 방식으로 작동하게 되며, 이를 Store-and-Foward 방식이라고 부른다.
- 3. 스위치의 등장
브릿지를 사용하면서 효율성이 많이 올라가자, 2-포트가 아니라 멀티 포트 구조로 바꾸고 고효율로 마개조하는 인간들이 나타나기 시작했다. 1990년 Kalpana라는 회사에서(1994년에 Cisco가 아앙 먹음) EtherSwitch EPS-700라는 이름으로 괴랄한 멀티포트 브릿지를 내놓았다. 소프트웨어적으로 프레임을 읽고 필터링하던 방식에서, 하드웨어 수준에서 헤더 부분만 읽고 바로 목적지로 던져버리는 방식으로 변화하게 되었는데, 이를 Cut-Through 방식이라고 부른다. 컷-스루에서는 헤더의 dest. MAC만 파싱해서 바로 매칭되는 포트로 프레임을 던져버리기 때문에 보다 빠른 처리가 가능해졌다.
전에 스위치와 브릿지를 구분하는 방법으로 Broadcast Domain을 분리할 수 있는 특징의 유무로 구분할 수 있다고 했는데,
정리하자면, 스위치는 멀티포트를 지원하는 고효율 브릿지의 브랜드명이 일반명사화된 것이라고 생각하면 되겠다. 얼탱 X
그러면 스위치가 브릿지보다 무조건 더 좋은 거 아님?
(여기에서 말하는 브릿지는 고전적인 방식의 2-포트 브릿지를 말한다.) 여전히 브릿지는 여러 환경에서 필요에 의해 사용되고 있다. 클라우드 환경을 구성할 때, `br0`과 같이 가상화된 형태로 브릿지를 흔히 끼워넣는데, 이게 VM과 NIC 사이에 Collision Domain을 분리하기 위한 용도로 사용하는 것이다.
또한, 무선 라우터를 L2로 이어서 하나의 네트워크처럼 구성하는 WDS (Wireless Distribution system) 기술이라는게 있다고 한다. 무선 메시 네트워크를 구성하듯이 서로 다른 무선 구간을 하나로 이어주는 기술이며, 이 연결 과정에 브릿지가 사용되게 된다. 유무선 라우터 제조사들에서 지원하는 메시 기능과 WDS의 차이가 궁금한데.. WDS를 기반으로 각자 구현한 구현체인건지..? 이건 저도 잘 몰루?