스위칭 허브

Violet_Evgadn·2023년 4월 27일
0

네트워크

목록 보기
23/37

스위칭 허브

지금까지 허브를 설명할 땐 "리피터 허브"에 대해 설명했다.

하지만 최근 네트워크에선 스위칭 허브를 더 많이 사용하기 때문에 스위칭 허브에 대해서 더 자세히 알고 있어야 한다.

이젠 스위칭 허브에 대해서 자세히 알아보자.

스위칭 허브 동작

알아둬야 할 것은 스위칭 허브는 이더넷 규칙(정확히는 네트워크 프로토콜. 이더넷은 대표적인 네트워크 프로토콜이다)에 의해 동작하며 데이터 송/수신만 놓고 봤을 때는 LAN 어댑터와 유사한 동작 방식을 가진다.

먼저 신호가 허브의 RJ-45 커넥터 부분에 도착한다.

신호는 RJ-45 커넥터에서 PHY(MAU) 회로로 이동할 것이다. 이전에 말했듯 허브는 DCE로써 MDI-X를 사용하기 때문에 커넥터와는 크로스 케이블로 연결되어 있을 것이다.

수신 과정에서 PHY(MAU) 회로는 네트워크 프로토콜 규격에 맞는 신호를 공통 신호 형식으로 변환한 후 MAC 회로에 전달한다.

MAC 회로는 FCS를 검사하여 패킷의 상태를 확인하고 문제가 없으면 버퍼 메모리에 저장한다.

LAN 어댑터의 수신과 거의 같은 과정임을 알 수 있다.

커넥터와 안쪽에 있는 회로 부분을 묶어 "포트"라고 부른다.

서버나 클라이언트 측에 존재하는 Port Number와 헷갈릴 수도 있는데 서버나 클라이언트에서 포트는 소켓을 구분하기 위해 할당된 숫자이고 스위칭 허브에서 포트는 신호를 송/수신하는 부분으로써 서버나 클라이언트의 LAN 어댑터에 해당하는 부분이기 때문에 완전히 다른 개념이다.

이 포트와 LAN 어댑터는 매우 유사하지만 다른 부분이 1가지 존재하는데 MAC 주소의 할당 여부이다.

이전에 말했듯 LAN 어댑터는 기기를 만들 때부터 ROM에 고유한 주소인 MAC 주소를 저장한다고 말했다. LAN 어댑터는 이런 MAC 주소를 활용하여 패킷 MAC 헤더의 수신처 MAC 주소 값과 동일하지 않을 경우 패킷을 폐기한다.

하지만 스위칭 허브는 MAC 주소가 할당되어 있지 않다.

스위칭 허브의 포트는 수신처 MAC 주소를 검사하지 않고 받은 패킷은 모두 버퍼 메모리에 저장하므로 굳이 스위칭 허브에 MAC 주소를 할당될 필요가 없는 것이다.

참고로 관리 기능 등을 추가하기 위해 프로세서를 내장한 스위칭 허브가 있는데 이 경우엔 스위칭 허브 내부에 작은 컴퓨터가 존재하는 형태이므로 내부의 작은 컴퓨터에 MAC 주소와 IP 주소까지 할당되어 있다.

하지만 스위칭 허브의 발전된 형태이며 기본적인 형태는 아니므로 간주하지 않도록 하자.

MAC 주소표

리피터 허브와 비교했을 때 스위칭 허브의 가장 큰 특징은 연결된 모든 기기가 아닌 "목적지 기기"에만 패킷을 전달한다는 것이다.

따라서 스위칭 허브는 패킷을 어디로 어떻게 보내야지 목적지 기기에 도달할 수 있는지를 파악할 수 있어야 한다.

지금까지 배웠던 것 중 목적지 기기에만 패킷을 전달해야 하는 네트워크 기기를 생각해 보자.

바로 "라우터"가 존재한다.

라우터는 라우터 내부에 존재하는 경로표(라우팅 테이블)를 통해 패킷이 어디로 어떻게 송신되어야 하는지 정했다.

스위칭 허브에도 라우터의 경로표와 같은 역할을 하는 것이 있으니 바로 "MAC 주소표"이다.

MAC 주소표 예시

버퍼 메모리에 저장된 패킷은 스위치 회로에 의하여 호출되며 스위치 회로는 패킷에서 수신처 MAC 주소를 검색한다.

이후 수신처 MAC 주소와 일치하는 것이 MAC 주소표에 등록되어 있는지를 조사하고 어느 포트에서 패킷을 송신하면 다음 목적지에 갈 수 있는지 알아낸다.

스위치 내부 MAC 주소표는 연결된 기기의 MAC 주소와 그 기기가 어느 포트와 연결되어 있는지에 대한 정보가 들어 있다.

이를 쉽게 말하자면 "이 포트(패킷의 송/수신구)를 사용하면 지정한 MAC 주소를 가진 기기로 갈 수 있다"가 정해져 있는 것이다.

라우터의 라우팅 테이블도 데이터를 계속 갱신했듯 MAC 주소표 또한 계속해서 저장하고 있는 데이터를 갱신해야 한다.

MAC 주소표의 갱신 동작은 두 종류가 존재한다.

하나는 패킷을 수신했을 때 송신처 MAC 주소를 조사한 뒤 수신한 입력 포트 번호와 같이 MAC 주소표에 등록하는 것이다.

패킷이 수신 포트로 들어왔다는 것은 연결된 기기 중 특정 기기가 패킷을 송신했다는 말과 동일하다.

스위칭 허브와 연결되어 있는 기기는 현재는 패킷의 송신처이지만 나중에는 스위칭 허브에서 보내는 패킷의 수신처가 될 수도 있다.

따라서 스위칭 허브는 패킷을 수신할 때마다 패킷의 송신처 MAC 주소와 패킷을 수신한 허브를 연결시켜 같이 저장한다.

아직은 MAC 주소표에 등록되어 있는 상태는 아니며, 만약 한 번이라도 저장했던 MAC 주소에 패킷을 송신한다면 그때서야 저장해 놨던 (송신처 MAC 주소 - 허브) 데이터를 MAC 주소표에 저장하는 것이다.

두 번째는 MAC 주소표에 등록되어 있는 내용을 지우는 것이다.

MAC 주소표에 등록된 정보는 일정 시간이 경과되면 삭제되는데 이것은 기기가 이동되었을 때 불편함을 방지하기 위함이다.

이 두 가지 갱신 동작을 한 번에 설명할 수 있는 예시를 들어보자.

책상에 연결되어 있는 노트북 PC를 회의실로 가지고 들어가 사용한다고 가정하자. 이처럼 기기를 이동하면 스위칭 허브 입장에서 봤을 때 접속되어 있던 노트북이 없어져버린 것처럼 보인다.

하지만 만약 MAC 주소표가 계속해서 동일한 MAC 주소와 포트 번호 쌍을 저장하고 있으면 노트북과 연결된 포트가 변경되었음에도 불구하고 기존에 사용하던 포트로 패킷을 보낼 것이다.

즉, 정확한 목적지로 데이터를 보낼 수 없게 되는 것이다.

이런 상황을 막기 위하여 일정 시간이 지나면 MAC 주소표에서 데이터를 지워 기기가 이동한 상황에서 에러가 발생하지 않도록 한다.

또한 MAC 주소표에서 데이터가 지워졌을 때 회의실 노트북 PC에서 허브에 패킷을 보냈다고 가정해 보자. 그럼 그 패킷 입장에서는 새로운 MAC 주소를 가진 기기가 수신 포트로 들어왔으므로 (노트북 MAC 주소 - 수신 포트 번호) 쌍을 저장해 둔 뒤 응답을 노트북에 보낼 때 MAC 주소에 등록시키며 노트북에 패킷을 보낼 수 있게 되는 것이다.

MAC 주소표에서 데이터를 지울 때까지의 시간은 보통 몇 분 정도이다.

그래서 MAC 주소표에서 오래된 정보가 삭제되기 전 다시 사용되어 연결이 끊긴 기기로 패킷이 이동하는 경우도 있다.

이 경우 이전 장소(연결이 이미 끊긴 기기)로 패킷이 도착해야 하므로 통신 동작이 올바르게 이루어지지 않는다.

이런 문제가 발생할 경우 스위칭 허브를 리셋하여 MAC 주소표 내용을 전부 지운다면 새로운 정확한 정보가 등록될 것이므로 다시 정상적으로 동작할 것이다.

정리하자면 MAC 주소표의 내용은 스위칭 허브가 알아서 등록하거나 삭제하므로 수동으로 등록 및 삭제할 필요가 없다.

고급 기능을 가진 스위칭 허브는 수동으로도 MAC 주소를 관리할 수는 있지만 기본적으로는 MAC 주소표를 수동으로 갱신하는 기능이 없다.

따라서 MAC 주소표의 내용이 이상해졌을 때는 기기를 리셋하여 MAC 주소표 내용을 전부 지워야 하며 이렇게 해도 큰 문제는 없다.

스위치 회로 & 패킷 송신

MAC 주소표에서 패킷을 송신할 포트를 알았다면 스위치 회로를 경유하여 검색한 포트로 패킷을 내보낸다.

스위치 회로는 전자 회로를 통해 위 이미지와 같은 구조로 만들어진 회로로써 입력 포트와 출력 포트를 연결할 수 있다.

교점에 스위치가 존재하는데 스위치는 개폐가 가능하며 스위치가 어디에 연결되어 있는지에 따라 신호가 어느 포트로 흐를지 정할 수 있다.

예를 들어 1번에서 입력을 받아 4번 포트로 출력시키고 싶다고 가정하자.

이때 위 사진에서 빨간색 스위치를 여는 것이다. 그러면 1번 포트에서 빨간색 스위치까진 정상적으로 이동했다 스위치가 열려 있으므로 빨간색 선 따라 신호가 갈 것이다. 이후엔 계속 아래로 신호가 흐를 것이므로 4번 포트에 도착할 것이다.

스위치 회로에 존재하는 스위치는 독립적으로 움직이기 때문에 신호가 중복되지 않는다면 복수의 신호를 동시에 흘릴 수도 있다.

스위치 회로를 통해 송신 측 포트에 패킷이 운반된다면 다시 LAN 어댑터의 패킷 송신 과정과 동일한 과정을 거친다.

송신 포트를 제외한 모든 포트에 패킷을 보내는 리피터 허브와는 달리 스위칭 허브는 1개의 포트만 사용하여 패킷을 송신한다.

따라서 수신처 MAC 주소의 기기와 연결되어 있는 포트를 제외하면 나머지 포트는 송신 동작을 수행하고 있지 않다.

이렇게 송신 동작을 하고 있지 않은 빈 포트는 다른 패킷을 송신할 수 있을 것이며 이런 방식으로 한 번에 여러 개의 패킷을 중계할 수 있게 된다.

즉, 기기 전체에서 중계할 수 있는 패킷의 수는 스위칭 허브가 리피터 허브보다 훨씬 많은 것이다.

예외 동작

스위칭 허브의 기본적은 동작은 위와 같지만 에외적인 상황이 존재하는데, 바로 리피터 허브와 스위칭 허브가 연달아 접속되어 있는 경우에 발생한다.

리피터 허브와 스위칭 허브가 연결되어 있을 경우 스위칭 허브의 MAC 주소표에 등록되어 있는 송신 포트가 패킷을 수신한 포트와 동일해진다.

스위칭 허브는 리피터 허브에서 패킷을 수신할 것인데 만약 목적지가 리피터 허브와 연결되어 있다면 패킷을 다시 리피터 허브 쪽으로 보내야 한다. 이런 상황이 벌어지는 것은 리피터 허브는 "연결된 모든 기기"에 패킷을 보내기 때문이다.

결국 리피터 허브로부터 패킷을 수신받은 포트로 다시 패킷을 송신해야 하는 상황이 발생하는 것이다.

그런데 여기서 문제는 목적지인 PC B의 경우 동일한 패킷을 2번 받는다는 것이다.

리피터 허브 쪽에서 패킷을 연결된 모든 기기에 패킷을 보내므로 PC B는 이때 패킷을 받는데 리피터 허브 → 스위칭 허브 → 리피터 허브 → PC B로 가는 패킷까지 PC B에게 송신되는 것이다.

또한 리피터 허브는 패킷을 받았으니 다시 연결된 모든 기기에 패킷을 보내야 하며 스위칭 허브에도 패킷이 다시 도착하는 순환이 일어나게 된다.

이런 문제를 해결하기 위해 스위칭 허브는 패킷을 수신한 포트와 송신할 포트가 동일할 경우 패킷을 중계하지 않고 폐기한다.

두 번째 상황은 MAC 주소표에 수신처 MAC 주소와 일치하는 주소가 등록되어 있지 않은 경우이다.

수신처 MAC 주소에 해당하는 기기에서 패킷이 한 번도 도착하지 않았거나 MAC 주소표에서 해당 기기가 삭제되었을 때 발생할 수 있는 상황이다.

이 경우 스위칭 허브는 어느 포트에 패킷을 송신해야 할지 판단할 수 없다.

따라서 스위칭 허브는 약간 무식한 방법으로 이런 문제를 해결하는데, 바로 패킷을 수신한 포트 이외에 연결된 모든 포트에서 패킷을 송신하는 것이다.

이더넷은 본래 네트워크 전체에 패킷을 보내고 패킷을 받아야 하는 사람만이 패킷을 처리한다는 원리로 성립되었기 때문에 이런 방식이 가능해진다.

물론 필요 없는 패킷을 보내기 때문에 네트워크에 흐르는 패킷이 조금 많아져 약간 혼잡해질 수 있다.

하지만 이는 큰 문제는 되지 않는데 라우터와는 다르게 허브는 작은 네트워크에서 사용된다고 가정하고 만든 네트워크 기기이므로 허브에 연결된 모든 케이블에 패킷을 보내더라도 혼잡으로 간주될 만큼 많은 패킷이 흐르지는 않는다.


패킷 통신 방식

반이중 모드(Half Duplex)

반이중 모드는 이전에도 말했지만 두 디바이스 간 통신선이 하나로써 케이블 양쪽 방향으로 신호의 전송은 가능하지만 특정 상황에선 반드시 한쪽 방향으로만 전송이 이루어지게 한 방식을 의미한다.

반이중 모드를 활용할 경우 데이터를 송신하기 전 수신할 패킷이 있는지 먼저 확인한 뒤 패킷을 송신한다.

또한 연결된 기기와 동시에 패킷을 송신하여 패킷이 충돌할 위험성이 있기 때문에 만약 충돌이 발생하였을 경우 재밍 신호를 보낸 뒤 대기 시간을 가지고 다시 패킷을 송신하는 방법을 선택한다.

전이중 모드(Full Duplex)

전이중 모드에선 두 디바이스 간 통신선이 2개로써 각각 송신선과 수신선의 역할을 수행한다.

송신선과 수신선이 따로 존재하기 때문에 패킷을 송신할 때 굳이 연결된 기기 측에서 패킷을 송신하고 있는지 신경 쓰지 않아도 된다.

스위칭 허브의 포트 부분이나 LAN 어댑터에 있는 PHY(MAU) 회로 및 MAC 회로의 내부 또한 송신용과 수신용이 나뉘어 있어 송신과 수신을 완벽히 분리시킨 통신 방법이라고 말할 수 있겠다.

전이중 모드를 사용할 경우 송신선과 수신선이 나뉘어 있으므로 충돌 방지 대책을 마련할 필요가 없다.

따라서 기존 리피터 허브에서 사용한 신호가 흐르는 것을 끝날 때까지 기다렸다 송신 동작을 수행하는 이더넷의 규칙을 개정하여 신호가 흐르고 있어도 상관하지 않고 송신해도 되는 새로운 동작 모드를 추가했다.

마지막으로 이 동작 모드로 동작할 때는 신호의 검출하는 회로를 무효화하며 위 내용이 "전이중"이라는 동작 모드의 전부이다.

전이중 모드를 사용할 경우 신호를 기다릴 필요가 없이 바로 송신할 수 있으므로 반이중 모드보다 빠르게 동작하며 양방향으로 패킷을 주고받을 수 있으므로 데이터 양의 상한선도 높아 성능이 좋다.

자동 조정(Auto negotiation)

전이중 모드가 추가되며 허브는 연결된 기기에 따라 전이중 모드와 반이중 모드를 전환할 필요가 생겼다.

처음 전이중 모드가 등장했을 때 한동안은 수동으로 동작 모드를 전환하며 사용했다.

하지만 나중에는 접속한 상대가 전이중 모드를 지원하는지 검출하고 만약 전이중 모드를 지원한다면 자동으로 전이중 모드로 전환하는 기능이 추가되었는데 이 기능을 "자동 조정"이라고 한다.

이 자동 조정 단계에선 동작 모드뿐만이 아니라 상대의 패킷 전송 속도를 검출하여 자동으로 전송 속도도 전환해 준다.

그렇다면 어떤 방식으로 자동 조정을 할 수 있는 걸까?

이더넷은 데이터가 흐르고 있지 않을 때 "링크 펄스"라는 펄스형의 신호를 흘린다.

즉, 데이터가 흐르고 있지 않더라도 링크 펄스라는 신호가 흐르고 있으며 이 신호를 통해 상대 기기가 올바르게 작동하는지, 케이블이 단선되진 않았는지 등을 확인할 수 있다.

이더넷 기기 커넥터 주변에는 초록 LED 표시등이 붙어 있는데 이 표시등이 켜져 있다면 PHY(MAU) 회로와 케이블에 이상이 없다는 것을 나타낸다.

이더넷이 최초로 만들어졌을 때는 펄스 신호에 별다른 의미는 없었고 단지 일정 간격으로 신호를 보낸다는 규정만 존재했으며, 정상적으로 동작하고 있는지 동작 확인용으로만 사용되었다.

하지만 나중에는 이 펄스 신호에 의미를 담을 수 있지 않을까 생각하였고 특정 패턴으로 펄스 신호를 송신함으로써 자신의 상황을 연결된 다른 기기에 전달하는 방법이 고안되었다.

자동 조정 기능은 바로 이 방법을 사용한다.

펄스 신호의 패턴에 의하여 지원 가능한 모드(전이중/반이중)와 전송 속도를 서로 통지하며 이 중 최적의 조합을 선택하여 자신의 전송 속도와 동작 모드를 설정하는 것이다.

홀수 번째 보내는 펄스는 신호의 타이밍을 잡기 위한 것으로 일정 간격으로 송신되며 타이밍을 잡는 것 이외에는 아무 의미도 없다.

짝수 번째 보내는 펄스가 전송 속도 및 동작 모드를 나타내는 펄스 신호로써 짝수 번째 펄스는 보내는 경우와 보내지 않는 경우가 있는데 이런 패턴에 의미를 부여하여 동작 모드를 상대에게 전달할 수 있다.

동작 모드에는 우선순위가 결정되어 있다. 그리고 우선순위가 높은 것부터 차례대로 조사하며 자신과 상대 모두가 지원하는 것을 찾아 그 방식대로 송/수신 모드를 결정하는 것이다.

동작 모드의 우선순위는 아래와 같다.

  1. 1기가비트/초의 전이중
  2. 1기가비트/초의 반이중
  3. 100메가비트/초의 전이중
  4. 100메가비트/초의 반이중
  5. 10메가비트/초의 전이중
  6. 10메가비트/초의 반이중

위에서 볼 수 있듯, 일단 전송 속도를 가장 우선시한다.

그리고 전송 속도가 동일할 경우 전이중 모드를 반이중 모드보다 높은 우선순위로 보는 것이다.

예를 들어 A 기기가 (1,2,3,4,5,6) 모두 지원하고 있다고 가정하자.

이때 만약 B 기기가 (4,5,6)을 지원할 경우 A와 B 기기는 4번(100메가비트/초의 반이중) 동작 모드를 통해 통신하는 것이다.

profile
혹시 틀린 내용이 있다면 언제든 말씀해주세요!

0개의 댓글