우리만의 작은 네트워크를 구성하기 위해서는 어떤 것이 필요하고, 각각 어떤 장단점이 있으며 어떤 부분은 주의해야 하는지 살펴보겠습니다!

내부 네트워크를 구성할 때는 허브를 사용해 각 PC를 연결합니다.
각 PC들은 UTP 케이블을 사용해 허브로 연결되어 있는 모양입니다.
일반 가정집에서는 여러 PC를 연결한 허브를 찾아보기 드물지만, PC방이나 회사에서는 이를 사용하여 작은 네트워크를 구성합니다.

허브는 멀티포트 리피터의 역할을 합니다.
허브에는 여러 개의 PC를 연결할 수 있는 포트 구멍이 있고, 이 포트들 사이에서 데이터를 전송(리피터)하는 역할을 합니다.
허브는 가격이 저렴하고 별도의 세팅없이 네트워크를 구성할 수 있어 장점이 있습니다.

하지만

보통 우리는 이더넷 방식을 사용해 네트워크를 구성하는데요, 이더넷은 데이터를 전송할 때 CSMA/CD 방식을 사용한다고 했습니다. 이전 포스팅

CSMA/CD는 토큰링 방식에 비해 빠른 속도를 자랑하지만, 치명적인 단점이 있습니다. 한 서버에서 잘못된 데이터를 보내 통신에 문제가 생긴다면, 다른 서버들도 이용이 불가능해진다는 것입니다.
그리고 한번에 하나의 서버만 데이터를 보낼 수 있고, 나머지는 전부 기다려야하기 때문에 지연이 일어납니다.

만약 데이터 통신이 많지 않은 네트워크는 허브를 이용해서 구성하더라도 값싸게 잘 이용할 수 있겠지만, 요즘처럼 데이터의 이동이 많아진 시대에는 이러한 지연이 단점이 되었습니다.


이것을 극복하기 위해

브리지라는 것이 발명됩니다. 브리지는 이후 스위치로 발전되어 요즘에는 스위치를 많이 사용합니다.

브리지도 스위치도 모두 이더넷을 사용할텐데 어떻게 CSMA/CD를 제어할 수 있었을까요?

바로 포트마다 콜리전 도메인을 나눠 주었다는 점입니다. 콜리전 도메인이란 콜리전이 발생하는 영역을 말하는데요, 허브에서는 콜리전 도메인이 전체 영역이라 허브에 연결되어 있는 모든 장비가 영향을 받았습니다.

하지만 브리지, 스위치에서는 마치 도로의 1차선을 4차선으로 나누듯 콜리전 도메인을 분리했습니다.
그리고 각기 다른 콜리전 도메인 사이는 브리지를 연결해 필요할 때 통신할 수 있도록 구성했습니다.

이렇게하여 콜리전 도메인의 수에 따라 동시에 보낼 수 있는 데이터 수가 달라지고, 한 군데서 문제가 발생해도 콜리전 도메인이 다르면 영향을 받지 않을 수 있게 되었습니다.


요즘에는 스위치도 가격이 많이 저렴해졌는데요, 그렇지만 데이터 통신이 많지 않은 네트워크의 경우에는 허브를 사용하는 것이 더 유리할 수 있습니다.
무조건 스위치를 구매하지말고, 상황에 따라 적절한 장비를 구매하는 것이 현명합니다!



브리지에서 일어나는 일

브리지의 흐름을 용어와 함께 설명하겠습니다.

Learning : 브리지에는 테이블이 존재하고, 이 테이블에는 연결된 장비들의 MAC 주소를 기록하게 되는데, 처음에는 아무것도 쓰여있지 않고 장비가 데이터를 전송하게 되면 그때 전송자의 MAC 주소를 기록합니다. 이렇게 테이블이 학습하는 과정을 Learning이라고 해요

Flooding : 아직 데이터를 한번도 보내지 않은 장비는 브리지 테이블에 MAC 주소가 존재하지 않는다고 했는데요, 이렇게 테이블에 없는 MAC 주소로 데이터를 전송하고 싶은 경우에는 브리지가 해줄 수 있는게 없어서 모든 콜리전 도메인에 데이터를 전송하게 됩니다. 이를 Flooding이라고 부르고요.

Forwarding : 만약 목적지 MAC 주소가 브리지 테이블에 적혀있는데, 나와 다른 콜리전 도메인이다!라면 데이터는 브리지를 건너야 합니다. 이렇게 브리지를 건너 다른 영역으로 데이터를 전송하는 것을 Forwarding이라고 합니다.

Filtering : 그렇다면 브리지 테이블에 적혀 있는 MAC 주소 중에 나와 같은 콜리전 도메인에 존재하는 MAC 주소라면 어떻게 해야할까요? 바로 브리지를 건너가지 못하게 Filtering 해주어야 합니다. 이렇게 Filtering 해줌으로서 브리지 건너편의 다른 영역은 그들끼리 통신을 할 수 있게 되는 것입니다.

Aging : 마지막으로 Aging이라는 것이 있는데요, 이것은 한정된 브리지 테이블 자원을 효율적으로 사용하기 위해서 설정해놓은 일정 시간동안 해당 MAC 주소가 데이터 전송을 아무것도 하지 않으면, 브리지 테이블에서 삭제 시켜버리는 것입니다. 만약 지속적으로 데이터를 전송한다면 유효한 시간은 계속 리프레쉬 되구요. 이렇게 하면 자원을 효율적으로 사용할 수 있겠죠?


바로 이렇게 포트를 기준으로 장치들을 분리하여 콜리전 도메인을 나눕니다. 그리고 모르는 MAC 주소가 들어오면 Flooding을 하고, 아는 MAC 주소가 들어오면 브리지를 건너 Forwarding을 하게 되는 원리입니다.



브리지가 발전된 것이 스위치라던데?

스위치는 브리지의 기능을 모두 가지고 있습니다.
그리고 그 외에도 더 많은 기능이 제공이 되는데요, 차이점을 살펴보겠습니다!

  • 스위치로 들어오는 프레임이 하드웨어 방식으로 처리됩니다. 브리지는 소프트웨어적으로 프레임을 처리했던 반면, 스위치는 프레임 처리 절차를 미리 칩에 구워서 하드웨어 방식으로 ASIC 했기 때문에 속도가 더 빨라요!

  • 그리고 브리지와 스위치는 프레임 처리 방식이 조금 다릅니다!
    먼저 방식에 대해 설명드릴게요

Store-and-forwarding : 프레임이 들어오면 일단 프레임을 전부 받아들이고, 에러가 없는지 확인하는 방식입니다. 에러가 자주 발생하는 곳에 사용하면 좋은데요, 그만큼 시간이 들겠죠?
.
Cut-through : 이건 프레임 중의 앞의 48bit만 추출해서 주소만 확인합니다. 그렇기 때문에 훨씬 빠르게 처리가 가능하지만, 에러 복구 능력이 떨어집니다..
.
Fragment-free : 이건 위의 두 방식의 장점을 합친건데요, 처음 48bit가 아닌 512bit를 추출해 확인함으로서 에러도 감지하고 속도도 올린 방식입니다!

  • 브리지는 Store-and-forwarding 방식만 지원하지만, 스위치는 Cut-through도 지원한다는 장점이 있습니다.



브리지와 스위치를 이중 연결한다면?

브리지나 스위치 간에 연결을 할 때, 이중으로 연결해야 하는 경우도 있습니다. 이렇게 이중으로 연결하면 어떤일이 벌어질까요?

처음에 Flooding이 일어날 때 양쪽 브리지가 모두 프레임을 받게되고, 두 브리지는 받은 프레임을 상대 브리지로 전송하게 됩니다.
그렇게되면 프레임이 도착하여 끝나는게 아니라 계속 케이블을 돌아다니게 되고, 이는 Looping 현상이 되어 네트워크를 사용할 수 없게 됩니다.

이를 해결하는 방법이 필요하겠죠?
바로 알고리즘을 활용하는 것인데요, 스패닝 트리 알고리즘을 사용해서 장비의 연결 중 사이클이 존재하지 않는 경로를 찾고, 나머지는 닫아주는 것입니다.
그리고 이후에 연결에 문제가 생겼다면 닫아놓은 경로를 열어 사용하는 방법입니다.



지금까지 LAN을 구성하는 방법에 대해 살펴봤습니다.
우리는 케이블, 허브, 브리지, 스위치를 사용해서 우리가 원하는 영역에 작은 네트워크를 구성할 수 있고 이를 통해 네트워크를 벗어나지 않고 정보 공유가 가능해집니다.
자원을 빠르게 공유하여 사용하고 싶을 때, LAN을 직접 구성해보면 어떨까요?

profile
꾸준하게 공부하고 기록하는 개발자

0개의 댓글

Powered by GraphCDN, the GraphQL CDN