Notes/Network

[Network] 스위치와 브릿지를 기깔나게 구분해보자

ReTeu 2023. 5. 19. 11:04

  CS 분야에 엄지발가락이라도 담가봤다면 아마 허브와 스위치를 구분할 줄 모르는 사람은 없을 것이다. 통상적으로 허브를 말하면 '더미 허브'를 의미하는 경우가 일반적인데, 이러한 더미 허브는 ARP와 같은 프로토콜을 이용하지 못 하기 때문에 허브는 자기 자신과 연결된 장비들의 MAC 주소를 저장하지 않고 있다. 때문에 패킷이 들어온 포트를 제외한 나머지 모든 포트로 이를 브로드캐스트하는 방식으로 작동한다.

더미 허브 (좌)와 스위치 (우)

  반면에, 스위치는 허브보다 똑똑하게 동작하는 친구이다. 여기에서는 허브와 비교를 위해 동일하게 L2 레벨에서 접근해보자. 스위치는 ARP를 통해 스위치에 연결된 장비들의 MAC 주소와 포트를 연결지어 기억하고 있다. 때문에 패킷이 들어게 되면 사전에 작성해둔 ARP Table을 바탕으로 패킷의 수신지와 연결된 포트로만 패킷을 전송할 수 있다는 차이가 있다. 또한 허브는 보통 Half-Duplex만 지원되어 동시에 하나의 라인을 타고 양방향에서 신호를 보낼 수 없지만, 스위치에서는 Full-Duplex가 지원되기 때문에 하나의 라인을 타고 양쪽 포인트에서 동시에 신호를 보내더라도 문제없이 전달된다는 것도 차이점이다.

 

  그렇다면 이번엔 스위치와 브릿지를 비교할 수 있을까? 사실 난 이 두 장비가 너무 유사하기 때문에 내 지식으로는 이 질문에 답을 할 수 없었다. 그래서 주변 사람들에게 브릿지와 스위치를 어떻게 구분할 수 있는지 물어보았지만, 생각보다 잘 대답할 수 있는 사람을 찾기가 어려웠다. 처음 두 개의 개념이 각각 구분될 당시에는 분명히 차이가 존재했겠지만, 요즘에 와서는 스위치와 스위칭 허브[a.k.a. 인텔리전트 허브]를 거의 구분하지 않는 것처럼 브릿지와 스위치도 크게 구분할 필요도, 건덕지도 거의 없을 거라는 답변만 돌아올 뿐이었다. 그럼에도 불구하고 아직까지 사람들이 분명히 이 두 용어를 구분하여 사용하고 있고 서버실에서 다루는 방화벽과 같은 장비들에서도 라우팅과 브릿지를 엄연히 구분해서 사용하고 있기 때문에 두 장비를 분명하게 구분지어줄 수 있을만한 특징이 있을 것이라 판단했고, 이에 대해 개인적으로 조사해본 기록을 차근차근 남겨보려고 한다.

 

 

 

  우선 허브와 스위치( ;브릿지)를 유의미하게 구분짓는 가장 중요한 요소는 Collision Domain이 어떻게 나뉘는가이다.

Collision Domain이란 무엇인가? 위에서 언급한 Half/Full Duplex처럼 여러 패킷이 동일한 라인을 통해 이동하기 때문에 눈치 없이 아무렇게나 끼어들었다가는 서로 충돌이 일어나 손실이 일어날 수 있는 영역 (Domain)을 의미한다.

  허브는 허브에 존재하는 모든 포트가 하나의 Collision Domain으로 묶여 있지만, 스위치나 브릿지는 기본적으로 모든 포트가 각자 스스로의 고유한 Collision Domain을 가진다.

 

 

스위치 (좌)와 브릿지 (우)

  바로 위에서 언급했지만, 그림을 보며 다시 한 번 정리해보자.

 

  스위치에서는 각 세그먼트가 하나의 콜리전 도메인을 가진다. 다시 말해 스위치의 모든 포틑는 고유의 콜리전 도메인을 가진다는 의미이다. 하지만, 브로드캐스트 도메인은 여전히 전체가 하나로 묶여 있다.

  브릿지 역시 각 세그먼트가 각자의 콜리전 도메인을 가지기 때문에, 데이터 전송 과정에서 하나의 회선에서 충돌이 일어나는 것을 막을 수 있다.  그렇다면 스위치와 브릿지는 왜 구분지어 부르는걸까?

  둘의 차이를 검색해보면 보통 스위치는 하드웨어로, 브릿지는 소프트웨어로 패킷을 처리하기 때문에 기판에 이미 모든 코드를 구워놓은 스위치가 훨씬 빠르게 작동한다는 말을 찾아볼 수 있었다. 그렇다면 거의 모든 상황에서 무조건 스위치가 유리한 것이 아닌가? 스위치를 사용하면 될텐데 왜 브릿지라는 개념이 등장하게 된 것이고 아직까지 유효한걸까?

 

  그 비밀은 브릿지라는 이름 속에 숨어있다. 브릿지는 두 개의 Broadcast Domain으로 구성되어 있는데, 두 개의 서로 다른 Broadcast Domain을 다리(Bridge)로 연결하는 개념이라고 생각하면 이해하기 쉽다. (근데 이 얘기 VLAN에서도 본 것 같은데?)

스위치에서 지원하는 경우, VLAN 기능을 사용하여 가상의 브로드캐스트 도메인을 추가할 수 있다. 하나의 VLAN으로 묶인 노드끼리는 하나의 LAN을 구성하는 것과 같이 작동한다. (물론 ARP 테이블도 따로 생성된다.)

  맞다. 스위치에서 VLAN 기능을 지원한다면 이를 사용하여 소프트웨어적으로 브로드캐스트 도메인을 나누어주는 효과를 볼 수 있다. VLAN은 Virtual LAN의 약자로서 VLAN ID를 나누어 가상의 LAN 환경을 설정해 사용할 수 있는 기능이다. 아마 이 부분에 때문에 브릿지만의 특색이 많이 죽어서 상대적으로 스위치가 훨씬 많이 보급된 것이 아닐까 싶다.
  

 

  두번째로 브릿지는 모든 포트의 최대 링크 속도가 균일하지만, 스위치는 가변적으로 연결할 수 있다는 특징을 가진다. 하나의 스위치에 10Gbps를 지원하는 포트와 1Gbps를 지원하는 포트가 모두 존재하는 식의 구조를 가지고 있으며, 이처럼 서로 다른 속도의 포트를 연결해 사용할 수 있다.

 

  세번째로 스위치는 Cut-Through와 Store and Foward 방식 두 가지를 모두 지원하지만, 브릿지는 Store and Foward 방식만을 제공하는 것이 일반적이다. 컷 쓰루와 스토어 앤 포워드에 대해 리마인드해보자면 아래와 같이 정리할 수 있다.

  - Cut-Through : 패킷의 헤더를 열어보고 목적지 ip 주소만 확인한 뒤 해당 목적지로 바로바로 보내버리는 방식.

  - Store and Foward : 들어오는 패킷들을 우선 버퍼에 모두 옮겨담은 뒤, 에러가 없이 정상적으로 전송되었는지 검증한 다음에, 이상이 없다면 목적지로 포워딩하고, 만일 에러가 발견됐다면 이를 폐기하고 출발지로 하여금 재전송을 요청하는 방식.