MAC 프로토콜 종류와 특징
Programming/네트워크

MAC 프로토콜 종류와 특징

  네트워크 링크에는 두 종류가 있다. 점대점 링크브로드캐스트 링크이다. 점대점 링크는 송신자와 수신자가 하나의 링크로 연결된 것이고, 브로드캐스트 링크는 하나의 공유된 브로드캐스트 채널에 다수의 송/수신 노드가 연결된 것이다.

 

점대점링크와 브로드캐스트 링크

 

우리가 쓰는 대부분의 컴퓨터네트워크는 브로드캐스트 링크를 사용한다. 브로드캐스트 링크는 많은 사람들이 대화하는 파티로 비유할 수 있다. 파티에서는 여러 사람들이 동시에 말을 한다. 그러나 네트워크에서는 동시에 데이터를 전송하게 되면 충돌이 발생하고, 수신 노드는 받은 데이터를 처리할 수 없게 된다.

 

그래서 충돌을 방지하기 위해 노드 간의 접속을 조정할 필요가 있다. 이것은 다중 접속 프로토콜이 해결해야할 문제이며, 이를 해결하기 위해 수많은 방법이 고안되었다. 이러한 방법을 MAC 프로토콜(Medium Access Control)이라 부른다. 맥 프로토콜에는 크게 1) 채널 분할 프로토콜 2) 랜덤 접속 프로토콜 3)순번 프로토콜 로 나뉜다.

  

  

1. 채널 분할 프로토콜

  채널 분할 프로토콜이란 브로드캐스트 자원을 각 노드에게 분배하는 방법을 말하며, 3종류가 있다.


  1) TDM(time division multiplexing) : 노드마다 전송할 시간을 분배하는 방법, N개의 시간슬롯으로 나눈다.

  2) FDM(frequency division multiplexing) : 채널의 주파수를 나누어 노드에게 분배한다.

  3) 코드 분할 다중접속 : 각 노드에게 다른 코드를 할당한다. 노드는 전송하는 데이터 비트들을 자신에게 할당받은 유일한 코드로 인코딩한다. 동시에 전송되어 간섭이 발생되어도 인코딩된 데이터 비트를 정확하게 수신할 수 있다는 장점이 있다.

  

  

  

2. 랜덤 접속 프로토콜

  랜덤 접속 프로토콜은 데이터를 보내고 싶을 때 보내는 대신, 충돌이 발생할 경우 재전송할 때까지 랜덤 시간동안 기다리는 프로토콜이다. 1) 알로하 2) CSMA/CD 방식이 있으며, 이 중 CSMA/CD는 가장 널리 쓰이는 MAC 프로토콜이다.

  

1) 알로하

  

2) CSMA/CD

  CSMA(Carrier Sense Multiple Access)의 핵심은 말하기 전에 듣는다는 것이다. 만약 다른 노드가 데이터를 전송하고 있다면, 그것이 끝날 때까지 다른 노드는 기다려야만 한다. 이것을 캐리어 감지(carrier sensing)라고 한다. 그리고 다른 사람과 동시에 말하기 시작하면 말을 중단해야 한다. 이것을 충돌 검출(collision detection)이라 한다.

 

여기서 떠오르는 질문은 "만일 모든 노드들이 캐리어 감지를 한다면, 어떻게 충돌이 발생할 수 있을 것인가?" 이다. 다른 사람이 말을 하고 있을 때는 절대 자신이 말을 하지 않을 것이니 말이다. 이에 대한 해답은 아래 그림으로 설명할 수 있다.

전송이 충돌하는 두 CSMA 노드의 공간 시간 도표

위 그림에서 한 노드는 t0 시간에 전송을 시작했다. 그러나 모든 노드에게 도달되기까지 딜레이가 발생하기 때문에 오른쪽 끝에 있는 노드는 아무도 전송하고 있지 않는 것을 감지하고 t1 시간에 전송을 시작한다. 결국 충돌이 발생하게 된다. 즉, 데이터는 빛의 속도로 전송되기 때문에 딜레이가 발생하고, 언젠가 충돌이 발생할 수밖에 없다. 이러한 딜레이를 전달 지연(propagation delay)라고 부른다.

 

  위 그림에선 충돌 검출 기능이 없다. 그러나 CSMA/CD 방식에서는 전송 중일 때 충돌을 감지하면 그 즉시 전송을 멈춘다. 쓸모없는 손상된 프레임을 전송할 필요가 없기 때문이다. 그 후 랜덤시간동안 기다린 후 재전송한다.

 

랜덤 시간을 어떻게 설정할지 역시 중요한 문제이다. 가장 흔히 쓰는 방법은 이진 지수적 백오프(binary exponential backoff) 알고리즘이다. 이진 지수적 백오프란 충돌을 n번 경험한 프레임이 재전송할 때 {0, 1, 2, 2², ... , 2ⁿ - 1} 값 중 하나를 선택하는 방법이다. 따라서 충돌을 많이 경험할수록 더 오래 쉴 가능성이 높아진다.

  

cf.

왜 랜덤 시간을 정할 때 이러한 방법을 사용할까? 이것을 이해하려면 먼저, 노드의 입장에서 생각해야 한다.

 

각 노드는 브로드캐스트 채널에 얼마나 많은 노드들이 있는지 모른다. 따라서 충돌이 얼마나 자주 발생할지도 모른다. 이러한 이유 때문에 충돌이 발생할 경우 2의 배수씩 늘어나는 방법으로 랜덤 딜레이 시간을 정한 것이다.

 

당연한 이야기지만, 충돌한 노드가 모두 같은 딜레이 시간을 쉰다면 또다시 충돌이 발생할 수 밖에 없다. 그래서 여러 선택지 중 랜덤으로 하나를 정해 쉰다.

  

  

  

3. 순번 프로토콜

  순번 프로토콜은 자신의 차례가 왔을 때 데이터를 전송하는 방법이다. 수많은 방법이 있으나 중요한 순번 프로토콜로 다음 2가지가 있다.

  

1) 폴링 프로토콜

  폴링 프로토콜은 노드 중 하나를 마스터 노드로 지정한다. 마스터 노드는 각 노드를 라운드 로빈 방식으로 폴링한다. 마스터 노드는 노드1에게 지금 최대로 보낼 수 있는 프레임 수에 대한 정보를 전달한다. 이에 맞춰 노드1이 프레임 전송을 끝내면, 마스터노드가 이를 감지하고 노드2에게 최대로 보낼 수 있는 프레임 수 정보를 전달하는 방식이다.

 

폴링 프로토콜(polling protocol)

 

폴링프로토콜의 장점과 단점은 다음과 같다.

장점 : 충돌 뿐만 아니라 랜덤 접속 프로토콜의 단점인 빈 슬롯을 제거함으로써 훨씬 높은 효율을 제공한다.

단점 :
  1) 폴링지연 : 여러 노드 중 한 노드만 활성 노드이면, 다른 비활성 노드에게 마스터노드가 프레임 수 정보를 전달하는 비효율적인 시간이 발생한다.

  2) ★마스터 노드가 고장나면 전체 채널 동작이 멈춘다. 

 

2) 토큰 전달 프로토콜

  토큰 전달 프로토콜은 마스터 노드가 없는 대신 토큰(token)이라고 알려진 작은 특수 목적 프레임을 노드에서 노드로 전달하는 방식이다. 토큰을 갖고 있는 노드만 데이터를 전송할 수 있다. 전송할 프레임이 없을 때는 다음 노드에게 토큰을 전달한다.

 

토큰 전달 프로토콜 역시 토큰을 잃어버리거나, 토큰을 가진 노드가 정지하면 채널 전제가 동작을 멈춘다는 심각한 단점이 존재한다.

토큰 전달 프로토콜(token-passing protocol)

'Programming > 네트워크' 카테고리의 다른 글

MAC 주소와 ARP  (0) 2022.01.06