MAC 이란?
MAC (Media Access Control) 프로토콜은 데이터 링크 계층에 속하는 프로토콜입니다.
우선 데이터 링크 계층에 대해 간단히 살펴보겠습니다. 이전 포스팅에서 데이터 링크 계층은 같은 네트워크 안의 여러 기기 간의 데이터 전송과 물리 주소를 결정하는 계층이었습니다. 조금 더 구체적으로 말하자면, 데이터 링크 계층의 역할은 데이터 간의 충돌과 유실을 최소화하는 것입니다.
호스트와 라우터에서 데이터를 주고 받을 때는 크게 Point to Point와 Boardcast의 두 가지 방식이 있습니다. 사실상 broadcast 방식을 주로 사용하기 때문에 공용선(shared wire)을 통해 패킷을 전송합니다. 그리고 공용선을 통해 데이터를 보내면, 누구든지 그 시그널을 들을 수 있고, 그 시그널에서 내가 수신이라면 듣고 아니라면 버리는 방식으로 데이터가 전달됩니다.
마치 같은 공간에서 여러 명이 동시에 이야기를 하는 상황과 비슷합니다. 만약 모두가 한방에 있고 모두가 동시에 다른 사람에게 말을 시작하면 혼란스러운 상황이 생기게 됩니다. 데이터 링크 계층에서도 마찬가지입니다. 같은 공용선에 연결된 호스트들이 동시에 전달하고자 하는 내용(Frame)을 전송한다면, 어떤 데이터를 받을지 혼란스럽게 됩니다.
이렇게 Boardcast channel에서 두 개 이상의 장치가 동시에 데이터를 전송하려고 하면, 그 신호들이 서로 충돌하여 데이터가 제대로 전송되지 않는 문제가 발생하게 됩니다.
이를 방지하기 위해 multiple access control protocol(MAC)이라는 것이 등장하게 됩니다. MAC은 Boardcast channel을 공유하며, 이런 혼란을 방지하고 각 장치의 차례를 정해주는 것입니다.
이상적인 multiple access protocol을 생각해본다면, 우선 한 사람만 쓰려고 할 때는 broadwidth를 모두 사용해야할 것입니다. 그리고 m개의 host가 사용하려 할 때는, broadwidth/m을 사용해야 할 것입니다. 위 조건들을 충족하기 위해 많은 MAC 프로토콜이 제안되었으며 그 중 크게 3가지 종류를 아래에서 살펴보겠습니다.
MAC의 분류
3가지 종류는 각각 채널 분할(Channel Partitioning), 무작위 접근(Random Access), 교대 방식(Taking Turns) 입니다.
각각을 살펴보겠습니다.
1. 채널 분할 (Channel Partitioning)
channel을 조각으로 쪼개 여러 개의 sub channel로 만드는 것입니다.
이때 조각을 나눌때 사용하는 기준으로는 3가지가 있습니다. time slot 으로 나눈것은 TDMA, code로 나눈것은 CDMA, frequency로 나눈것을 FDMA라고 부릅니다. 이렇게 조각낸 channel들을 사용자에게 할당해 주는 방식입니다.
(1) TDMA (Time Division Mutiple Access)
host별로 전송할 수 있는 시간을 할당해서 그 host의 시간이 돌아왔을 때만 전송할 수 있게 하는 것입니다. 이 방식은 시간대 별로 쓸 수 있는 사용자가 정해져있기 때문에, 문제 없이 해석할 수 있습니다.
하지만, 만약 하나의 사용자만 사용한다면 나머지 슬롯이 낭비되는 문제가 있습니다.
(2) FDMA (Frequency Division Multiple Access)
주파수를 분할 배정하여 해당 주파수만 이용하는 방법입니다. 충돌은 발생하지 않지만, 마찬가지로 자원이 낭비되는 문제점이 발생합니다.
2. 무작위 접근 (Random Access)
일반적으로 가장 많이 쓰이는 프로토콜입니다.
Channel을 미리 쪼개는 것이 아니라, 한 개의 채널이 있는 상태에서 사용하고자 하는 노드가 생기면, 할당해주는 방식입니다. 언제 사용자가 채널에 들어올지 모르기 때문에 Random access라고 부릅니다. 충돌을 어떻게 탐지하고 처리할 것인지 정하는 것이 이 방법의 핵심적인 부분입니다.
Random Access Protocol은 Slotted ALOHA, Pure ALOHA, CSMA 프로토콜이 존재하는데, ALOHA는 초창기의 Random Access 방식으로 효율이 낮다는 문제가 있습니다. 그래서 ALOHA 보다 효율성이 뛰어난 CSMA 방식에 대해서만 살펴보겠습니다.
CSMA (Carrier sense multiple access)
Listen Before Transmit : 전송 전 다른 frame이 전송 중인지 들음으로써 확인 후 전송하는 것입니다.
먼저 전송했지만 다른 host가 아직 도달 전인 frame을 듣지 못하고 frame을 전송하는 경우가 발생합니다. 이는 proportion delay로 인해 발생하는 문제로, 빛의 속도는 조절할 수가 없어 충돌이 불가피합니다. 따라서 충돌로 인한 피해를 줄이기 위해 아래의 CSMA/CD가 나오게 되었습니다.
CSMA/CD
충돌이 감지되면 binary backoff 방식을 이용해 충돌에 대처하는 것입니다. 쉽게 말해, 충돌이 감지되면 잠시 전송을 멈추고 다시 frame을 전송하는 것입니다.
여기서 재전송을 할 때의 규칙은 다음과 같습니다.
우선, m번의 충돌이 발생했다면 {0, 1, 2 , …. , 2^m-1} 중의 랜덤하게 숫자를 골라 그 시간만큼 대기 후 재 전송을 하게 됩니다(binary backoff). 충돌이 많을 수록 대기 시간이 길어질 확률이 높아지는 방식으로, 충돌이 여러 번 발생했다는 것은 그만큼 frame을 전송 중인 host의 수가 많다는 의미이므로, 오래 기다리도록 하기 위함입니다.
이러한 backoff로 인해 실제 사용자가 체감하는 지연시간이 길어진다는 단점이 있습니다.
3. 교대 방식 (Taking Turns)
서로 번갈아가면서 데이터를 전송하는 방식입니다. 간단하지만, 모든 노드가 전송할 데이터가 있다고 가정하며, 다시 데이터를 전송하기 까지 많은 시간이 걸립니다.
polling(여론조사)
master node를 통해 관리하는 방식입니다. 순서를 돌려가며 사용하는 방식인데, master node에서 오류가 날 경우 전체가 피해를 보는 문제가 발생할 수 있어 현실에서는 사용되지 않습니다.
token passing
control token을 순차적으로 넘겨주는 방식입니다.
token을 소유한 host가 보낼 frame이 있다면 전송하고 없다면 다른 host에게 token을 넘깁니다. token을 소유한 host만 frame을 전송할 수 있어 충돌은 없지만 이 token을 분실하는 경우 전체에 피해가 가므로 마찬가지로 사용되기가 어렵습니다.
참고자료
[컴퓨터 네트워크 - 한양대학교 이석복 교수님]
http://www.kocw.net/home/cview.do?cid=6166c077e545b736
https://the-square-of-y.tistory.com/222
https://inyongs.tistory.com/79
Computer Networking _ A Top Down Approach, 7th
'CS > Network' 카테고리의 다른 글
[네트워크] ARP Protocol (0) | 2024.02.27 |
---|---|
[네트워크] 데이터 링크 계층 : Ethernet (이더넷) (0) | 2024.02.26 |
[네트워크] 라우팅 알고리즘 (Routing Algorithms) (0) | 2024.02.23 |
[네트워크] IP 단편화&재조립, ICMP (0) | 2024.02.23 |
[네트워크] DHCP (0) | 2024.02.21 |