[Network] Hub, Bridge, Switch, Looping 개념 정리

Update:     Updated:

카테고리:

태그:

4. 네트워크 장비에 관한 이야기

5. 허브의 끝과 스위치의 시작

아무리 빠른 속도를 내는 허브를 쓴다고 하더라도 어느 한순간에는 한 PC만 데이터를 보낼 수 있다. 즉 허브에 연결된 한 PC에서 발생하는 콜리전이 다른 PC들에게도 영향을 주는 콜리전 도메인이 그 허브에 연결된 모든 PC들이다.

그러므로 콜리전 도메인이 너무 커지는 상황을 항상 조심해야 한다. 콜리전 도메인이 너무 커지게 되면 콜리전에 의해 영향을 받는 PC가 너무 많아지면서 통신의 속도가 점점 떨어지게 된다.

이러한 문제를 해결하기 위해서 콜리전 도메인을 나누어 줄 수 있는 장비가 나왔는데, 이 장비가 브리지(Bridge) 또는 스위치(Switch)이다. 스위치가 나오기 전가지는 이 역할을 브리지가 혼자 다해주었다.

스위치는 예를 들어 1번 포트에 연결된 PC가 2번 포트에 연결된 PC와 데이터를 주고받는 동안에도 3번 포트에 연결된 PC와 4번 포트에 연결된 PC가 서로 데이터를 주고 받을 수 있게 하는 장비이다. 이걸 전문적인 용어로는 ‘포트별로 콜리전 도메인이 나뉘어 있다’라고 말한다.

즉, 1번과 2번 사이에서 통신이 일어나면 나머지 모든 PC들은 기다려야만 하는 허브와는 달리 다른 PC들도 동시에 통신이 가능하다. 이것이 스위치와 허브의 가장 큰 차이이다.

허브와 스위치의 비교

  • 허브가 스위치보다 싸다.
  • 허브는 들어온 데이터에게 별로 해줄 일이 없기 때문에 데이터처리 속도가 허브가 스위치보다 빠르다.

허브와 스위치 중 어느 것을 사용하는게 좋으냐를 결정할 때는 네트워크에서 어떤 데이터가 돌아다니느냐 하는 것도 알아두어야 한다. 예를 들어 채팅이나 메일정도를 쓰는 경우에는 네트워크상에 트래픽이 적기 때문에 PC들을 스위치에 붙이는 건 낭비이다.

만약 모든 장비가 무조건 한 곳으로만 향하는 경우는 허브나 스위치나 속도의 차이가 크게 나지 않는다. 스위치의 다른 기능을 이용해서 통신의 효율성을 올릴 수는 있겠지만, 콜리전 도메인을 나눠주는 기능을 이용한 속도 향상은 기대할 수 없다.

6. 험한 세상의 브리지 되어 그대 지키리

허브는 모든 PC들이 하나에 붙어있기 때문에 이 허브로 연결된 PC들 간의 통신에는 문제가 생길 수 있다. 어떤 문제냐면, 허브에 연결된 PC들 중 두 PC만 통신을 하게 되면 그 순간에는 다른 PC의 통신이 불가능합니다.

콜리전 문제는 작은 규모의 네트워크에서는 문제가 안 되지만 네트워크의 규모가 커지게 되면 문제가 된다. 만약 네트워크의 규모가 커지고 통신량이 증가할 때 콜리전 도메인을 나누어 주기 위해서는 한 수 높은 스위치나 브리지를 사용해야 한다.

브리지가 콜리전 도메인을 나눠주는 방법은 허브로 만들어진 콜리전 도메인 사이를 반으로 나누고 중간에 다리를 놓는다. 그러면 나눠진 부분끼리 통신이 가능하게 된다. 즉, A쪽에서 통신이 일어나는 사이에 B쪽에 있는 PC들끼리도 통신이 가능하다. 그리고 A와 B간의 통신은 다리를 건너서 통신이 이루어집니다.

📌내용 정리📌

  • 브리지는 허브보다 한 수위의 장비이다.
  • 허브는 나누지 못하는 콜리전 도메인을 나누어주는 역할을 한다.
  • 스위치는 브리지랑 비슷한 기능을 한다.

7. 브리지 / 스위치의 기능

브리지나 스위치는 다음 5가지 일을 한다.

  • Learning : 배운다.
  • Flooding : 모르면 들어온 포트를 제외한 다른 모든 포트로 뿌린다.
  • Fowarding : 해당 포트로 건네준다.
  • Filtering : 다른 포트로는 못 건너가게 막는다.
  • Aging : 나이를 먹는다.

Learning

브리지나 스위치는 자신의 포트에 연결된 ‘A’라는 PC가 통신을 위해서 프레임을 내보내면 그때 이 PC의 맥 어드레스를 읽어서 자신의 맥 어드레스 테이블(‘브리지 테이블’)에 저장한다. 그리고 나중에 어떤 PC가 ‘A’에게 통신할 경우에는 자신의 브리지 테이블을 참고해서 다리를 건너게 할 것인지, 아니면 못 건너가게 할 것인지를 결정한다.

Flooding

그냥 들어온 포트를 제외한 나머지를 모든 포트로 뿌리는 것을 의미한다.

예를 들어, 0260.8c01.1111을 가진 PC가 맥 어드레스 0260.8c01.5555를 가진 PC와 통신을 하려고 프레임을 내보냈는데, 브리지는 이 프레임을 받고 목적지를 보니 0260.8c01.5555가 자신의 맥 테이블에는 없다는 것을 알게 된다. 왜냐하면 0260.8c01.5555는 지금까지 한 번도 통신을 하지 않았기 때문에 브리지가 출발지 주소를 배우지 못했기 때문이다.

따라서 브리지는 이 프레임을 모든 포트로 뿌리게 된다.(들어온 포트는 제외) 마찬가지로 브로드캐스트의 경우는 목적지가 모든 PC이기 때문에 역시 Flooding이 발생한다.

Forwarding

Forwarding은 브리지가 목적지의 맥 어드레스를 자신의 브리지 테이블에 가지고 있고, 이 목적지가 출발지의 맥 어드레스와 다른 세그먼트에 존재하는 경우에 일어난다. 즉, 목적지가 어디 있는지를 알고 있는데 그 목적지가 다리를 건너가야만 하는 경우에 Forwarding이 일어난다.

Forwarding은 이전에 배운 Flooding이 모든 포트로 프레임을 뿌는 것과는 달리 오직 해당 포트쪽으로만 프레임을 뿌려준다.

예를 들어, 이번에는 브리지가 0260.8c01.5555가 어디 있는지를 알고 있는 경우다. (한 번 이상 0260.8c01.5555에서 통신이 발생했다는 의미이다.) 이때 A 세그먼트에 있는 0260.8c01.1111이 0260.8c01.5555 쪽으로 프레임을 내보낸다.

그러면 이를 접수한 브리지는 자신의 브리지 테이블을 보게 되고 목적지 0260.8c01.5555가 A 세그먼트가 아닌 B 세그먼트에 있다는 것을 알게 된다. 따라서 다리를 건너야 하는 것을 안다. 여기서 0260.8c01.1111로부터의 프레임을 해당 B 세그먼트로 넘겨주게 되는데, 이를 Forwarding이라고 한다.

Filtering

Filtering은 브리지를 못 넘어가게 막는다는 것을 의미한다. 필터링은 브리지가 목적지의 맥 어드레스를 알고 있고, (즉 브리지 테이블에 목적지 맥 어드레스가 들어있는 경우) 출발지와 목적지가 같은 세그먼트에 있는 경우이다. 이 경우에는 브리지를 건너가지 않아도 통신이 일어날 수 있다. 따라서 브리지는 다리를 막는 필터링을 하게 된다.

브리지의 이러한 필터링 기능 때문에 허브와는 다르게 콜리전 도메인을 나누어 줄 수 있다.

Aging

Aging이란, 말 그대로 나이를 먹는다는 것이다.

브리지는 학습 능력이 있는데 이것을 Learning이라고 한다. 브리지는 출발지의 맥 어드레스를 외운 후 이것을 브리지 테이블이란 곳에 저장한다. 그러면 얼마 동안이나 저장할 수 있을까?

브리지 테이블은 한정되어 있기 때문에 평생 저장하는 것은 불가능하다. 따라서 브리지 테이블도 우리의 두뇌처럼 어느 정도 시간이 지나고 나면 이 정보를 브리지 테이블에서 지우게 된다.

왜냐하면 새로운 맥 어드레스를 기억해야 하기 때문이다. 그 시간은 디폴트로는 5분 즉, 300초이다. Aging이란 바로 이것에 관한 타이머이다.

즉, 어떤 맥 어드레스가 브리지 테이블에 저장하고 나면 그때부터 Aging이 가동되어서 저장한 후 300초가 지나도록 더 이상 그 출발지 주소를 가진 프레임이 들어오지 않으면 브리지 테이블에서 삭제 시킨다.

예를 들어, 어떤 프레임이 브리지에 들어왔는데 브리지는 출발지 주소 ‘AAAA’를 배운 후 브리지 테이블에 저장하고 Aging을 시작한다. 약 280초가 지나갈 무렵 아까 들어온 출발지 주소와 같은 ‘AAAA’를 가진 녀석이 또 브리지로 들어왔다. 이와 같이 Aging 타이머가 다 끝나기 전에 같은 출발지를 가진 녀석이 또 브리지로 들어오게 되면 브리지는 타이머를 리셋하고 처음부터 다시 카운트를 한다. 이것을 리플래시 한다 라고 말한다.

📌내용 정리📌

  • Learning : 처음 들어온 맥 어드레스를 브리지 테이블에 기록한다.
  • Flooding : 프레임의 목적지의 맥 어드레스가 처음 보는 경우, 모든 포트에 뿌리는 것을 의미한다. (브로드캐스트)
  • Forwarding : 프레임의 목적지가 다른 세그먼트에 있는 경우, 브리지를 넘어가 해당 맥 어드레스에 프레임을 뿌려준다.
  • Filtering : 프레임의 목적지 맥 어드레스를 알고 있고, 같은 세그먼트에 있는 경우에 브리지를 넘어갈 필요가 없기에 다리를 막는다. (콜리전 도메인 분리 가능)
  • Aging : 통신을 하고 난 후, 일정 시간 동안 통신이 일어나지 않으면 해당 맥 어드레스를 지운다. (리플래시)

8. Looping(뺑뺑이)는 왜 생길까요?

브리지나 스위치에서 자주 발생하는 루핑에 대해서 알아보자.

루핑은 프레임이 네트워크상에서 무한정으로 뱅뱅 돌기 때문에 이더넷의 특성상 네트워크가 조용해야 데이터를 전송할 수 있는 다른 녀석들이 계속 네트워크가 조용해지기를 기다리기만 할 뿐 데이터 전송은 불가능해지는 상태를 말한다.

예를 들어, 두 호스트 사이에 스위치 또는 브리지가 두 개 있다고 가정해보자. 죽 하나의 호스트에서 다른 호스트로 가는 경로가 두 개 이상 만들어진다는 것이다. 보통 이렇게 구성하는 것은 하나의 경로가 끊어져도 다른 경로를 쓰기 위한 것인데, 이런 식으로 구성을 하게 되면 루핑이 발생하게 된다.

호스트 A가 브로드캐스트 패킷을 보내면, 양쪽 브리지(스위치)로 전달이 된다. 그러면 두 개의 브리지는 이 패킷을 분석해 Flooding을 하게 된다. 브리지는 목적지 주소를 보고 그 주소가 자신의 브리지 테이블에 없거나, 멀티캐스트 주소이거나, 브로드캐스트 주소인 경우에는 들어온 프트를 제외한 나머지 모든 포트로 뿌리게 된다.

그럼 상대방쪽 세그먼트로 브로드캐스트 패킷이 보내진다. 즉 양쪽 브리지에서 모두 패킷이 다리를 건너게 된다. 그 다음에는 반대쪽으로 건너간 브로드캐스트 패킷을 다시 양쪽 브리지의 아래쪽 포트로 전달되고, 이 패킷 역시 브리지 특성에 따라 다시 위로 전달된다.

이런 과정이 반복되게 되면 한 번 발생한 브로드캐스트 패킷이 양쪽 브리지를 통해 네트워크를 계속 뱅뱅 돌게 되는 루핑이 발생하게 된다.

이러한 루핑을 막기 위해서는 ‘스패닝 트리 알고리즘’이 필요하다.

📌내용 정리📌

  • 브르지나 스위치에 목적지까지의 경로가 두 개 이상 존재하면 반드시 루핑이 발생한다.
  • 이를 막기 위해서는, 스패닝 트리 알고리즘이 필요하다.

9. 스패닝 트리되지 않는 스위치는 팥 없는 찐빵

브리지(스위치) 간에 2개의 경로가 있을 경우, 양쪽 스위치들이 스패닝 트리 상태로 세팅되어 있지 않으면 네트워크에는 루핑이 발생하게 된다.

만약, 스패닝 트리 상태로 세팅되어 있으면 자동으로 루핑을 검색해서 이런 루핑이 발생할 수 있는 상황을 미리 막아주는 역할을 한다. 그렇게 만드는 방법은 스위치간의 두 개의 링크 중 하나를 끊어 놓는 것이다. 따라서 실제 링크는 두 개이지만 데이터는 한쪽으로만 다니게 하는 것이다.

링크를 두개 만드는 이유는 사용하는 하나의 링크가 끊겼을 때를 대비하는 것이다.

즉, 스패닝 트리 알고리즘이란 스위치나 브리지에서 발생할 수 있는 루핑을 미리 막기 위해 두 개 이상의 경로가 발생하면 하나를 제외하고 나머지 경로를 자동으로 막아두었다가 기존 경로에 문제가 생기면 막아놓은 경로를 풀어서 데이터를 전송하는 알고리즘이다.

스패닝 트리 알고리즘에 의해서 현재의 링크가 끊어졌을 때 대기하고 있던 다른 링크가 살아나서 연결을 해주는데 걸리는 시간은 약 1분 이상이 소요된다. 따라서 요즘의 스위치들은 이러한 전통적인 스패닝 트리 알고리즘의 약점을 보완하고 있다.

예를 들어, 시스코의 이더 채널 기술은 여러개의 링크가 마치 하나의 링크처럼 인식되게 하는 기술이다.

이러한 이더 채널은 속도에 따라서 패스트 이더 채널과 기가 이더 채널 등이 있고 최대 8개의 링크를 묶어서 만들 수 있게 되었다.

10. 라우팅이냐, 스위칭이냐?

라우팅과 스위치의 비교

  • 가격 : 라우터가 스위치보다 비싸다.(라우터보다 비싼 스위치도 있지만 비슷한 스펙을 가지고 비교해보면 라우터가 비싸다.)
  • 속도 : 스위치가 우세하다. 라우터는 내부에서 처리해야할 일이 많아서 스위치보다 패킷을 처리하는 속도가 느릴 수밖에 없다.
  • 구성의 편리함 : 스위치가 구성이 훨씬 쉽다. 스위치는 대부분 전원만 공급해주면 사용이 가능하지만 라우터는 그러지 않다. 라우팅 프로토콜도 정해주어야 하고, 네트워크도 설정해줘야 한다.

라우터를 사용하는 이유는 스위치로는 풀 수 없는 한계가 있기 때문이다.

첫 번째 이유는 브로드 캐스트이다.

만약, 인터넷 전체가 하나의 브로드캐스트 영역이라고 생각해보면 어떤 문제가 발생할까? 아마 네트워크를 사용하는 것은 상상도 할 수 없을 뿐만 아니라 PC 자체도 사용이 불가능해진다. 따라서 브로드캐스트 영역을 나누는 것은 정말 중요한 일이다. 이러한 브로드캐스트를 나눠주기 위해서는 라우터가 꼭 필요하다.

만약, 모든 네트워크를 다 스위치로 구성하게 되면 어떻게 될까? 콜리전도메인은 줄어드는 대신 브로드캐스트 도메인이 늘어나서 한 번의 브로드캐스트가 모든 영역에 영향을 주는 문제가 발생한다.

이때 이 문제를 해결하기 위해서는 라우터가 필요하게 된다. 라우터를 사용함으로써 브로드캐스트 도메인을 줄일 수 있다.

브로드캐스트를 나눌 때는 사용하는 프로토콜이나 애플리케이션 프로그램에 따라서 약간의 차이가 있다. 보통 권고사항은 아래와 같다.

  • IP일 때 약 500 노드
  • IPX일 때는 300 노드
  • AppleTalk는 200 노드

하지만 실질적으로는 여기 기준에서 약 반 정도만 사용해야 제대로 네트워크를 사용할 수 있다.

또한, 라우터는 스위치가 보장 못하는 보안 기능, 즉 패킷 필터링 기능을 제공한다. 따라서 네트워크 주소에 따라 전송을 막았다 풀었다 하는 필터링 기능을 제공해서 불필요한 트래픽이 전송되는 것을 막는다.

또 하나 라우터가 제공해주는 기능은 바로 ‘로드 분배’ 이다. 즉 여러 개의 경로를 가지고 있기 때문에 데이터가 여러 경로를 타고 날아갈 수 있다. 따라서 한 쪽 경로에 문제가 생겨도 다른 경로를 타고 날아갈 수 있다.

이외에도, 여러 상황에 따라 트래픽의 순서를 조정해주는 QoS(Quality of Service) 기능도 제공한다.


🐢 현재 공부하고 있는 후니의 쉽게 쓴 CISCO 네트워킹 - 진강훙 저자 의 책을 학습하며 기록 및 정리를 하기위한 내용들입니다. 🐢

감사합니다.😊

Network 카테고리 내 다른 글 보러가기

댓글남기기