앞서 MAC 프로토콜에 대한 정의와 함께 채널을 분할[Channel Partitioning]해서 사용하는 방식에 대해 언급했었다. 해당 방법은 네트워크 환경이 IDLE 할 때는 성능이 좋지 않다는 단점을 가지고 있었다. 이번에 배울 Random Access는 이와 반대로 IDLE한 환경에서 좋은 성능을 보여준다.
1. as-backup.tistory.com/5?category=1156499
MAC 방식 중 다른 유형인 Random Access 방식은 문자 그대로 '아무나 접근'이란 뜻이며 방법도 이와 같다. "채널을 쪼개지 말고 하나의 큰 채널 그대로 사용하되, 그냥 눈치껏 충돌 나지 않게 알아서들 전송하자~" 라는 가치관을 추구한다. 따라서 충돌을 어떻게 발견하고 어떻게 회복할지를 기준으로 여러가지 방법이 나와있다. 이 방식에 포함되는 대표 프로토콜은 ALOHA, Slotted ALOHA, CSMA, CSMA/CD, CSMA/CA가 존재한다.
1. ALOHA
'알로하'다. 실제로 하와이 대학에서 연구된 방식이기 때문이다. 가장 오래된 통신 방법이며 직관적이다. 왜냐면 '보내고 싶은 프레임 생기면 그냥 전송해'가 규칙이기 때문이다. 그러다 만약 충돌이 발생하면 '어라 충돌했네' 하고 메시지 전송을 취소 시킨다. 굉장히 간단하지만, 문제가 존재한다.
노드 A가 메시지를 전송했는데 이 사실을 몰랐던 노드 B에서 메시지를 또 다시 전송했다. 이런 상황에서는 A는 대부분의 메시지를 다 전송하고 조금만 남아있는 상황이었는데 모든 전송 과정을 다 취소해야하는 상황이 되버린다. 따라서, 나온 아이디어가 '동기화' 시켜서 전송하는 방식인 Slotted ALOHA다.
2. Slotted ALOHA
위의 ALOHA는 충돌이 일어날 때 메시지의 아주 일부분만 충돌이 나도 모든 과정을 다 취소해야하니까 아깝다는 생각이 들어 나온 것이 동기화된 ALOHA 방식인 Slotted ALOHA다. 이는 데이터 링크 채널에 고정적인 슬롯을 만들고 해당 슬롯에 맞춰서 전송을 시작하는 것이다. 따라서 모든 프레임의 사이즈는 동일해야 하고 모든 노드는 해당 슬롯의 시작 지점에 맞춰 전송을 시작해야 한다.
예를 들어 스키장 리프드와도 같다. 리프트는 앞으로 전진할 뿐이고 사람들이 리프트의 출발 지점에 맞춰 타는 것처럼 노드도 슬롯 시작 부분에서 타는 거다. 물론 이 방식에도 충돌은 존재한다. 하나의 슬롯 시작 지점에 여러 노드가 프레임을 태우면 충돌이 발생하는 것이다. 충돌이 발생한 노드는 일정 시간동안 대기하다가 특정 확률에 따라 다시 메시지를 재 전송 시킨다.
아래 그림을 보자
노드 1,2,3이 첫 슬롯에서 한번에 데이터 전송을 시도했다가 충돌이 나버린다. 그리고 각 노드마다 특정 확률에 맞춰서 대기 한 후, 재전송을 시도한다. 이때 노드 1과 2는 또 다시 충돌이 일어났다. 그 후 노드 2는 또 한번 전송 시작. 눈치 게임 성공해서 충돌 없이 데이터 전송이 가능하다.
장점으로는 심플하고 오직 슬롯만 필요하기 때문에 어떠한 중앙 장치 제어가 필요없다. 또한 채널이 IDLE하다면 하나의 노드가 여러번 계속 채널을 쓸 수 있기 때문에 TDMA, FDMA에서 보았던 채널 IDLE 문제 또한 없다. 단점으로는 충돌이 여러 번 생길 시 해당 타이밍의 슬롯이 낭비되며 동기화 CLOCK에 맞춰야 한다는 단점이 존재한다.
그러나 이러한 방법 마저 최대 전송 효율을 따져보면 37% 밖에 되지 않는다. 따라서 둘 다 썩 좋은 방식은 아니라는 뜻이다. 따라서 현재 사용되는 방식은 유선의 CSMA/CD와 무선의 CSMA/CA가 사용된다.
3. CSMA [Carrier Senese Multiple Access]
'전송 전에 들어보자'라는 컨셉의 전송 방식이다. 앞선 알로하 방식은 보내고 싶으면 보냈다. 채널이 사용되고 있는지에 대해 전혀 고려하지 않고 보낸 후에 충돌이 있으면 취소하는 방식이었다. CSMA는 이와 달리, 내꺼 전송하기 전에 누가 쓰는지 살펴보고 전송하는 방식이다. 채널이 IDLE한지 스윽- 살펴보고 맞다면 내 프레임을 전송하고 만약 누군가 사용하고 있다면 나는 전송을 잠깐 미룬다.
좋은 방식처럼 들린다. 누군가 화장실을 쓰고 있는지 확인하고 쓰고 있다면 기다리고, 내가 화장실을 쓰는 중이라면 다른 누군가는 기다릴테니 하나의 화장실 칸에 두 사람이 마주칠 일이 없다.
과연 그럴까? 아니다. "Propagation Delay" 때문이다. 전파 지연이라고도 불리는 이 지연은, 노드가 데이터를 전송하는 초기에 쯔음 발생하는 지연이다. Propagation Delay가 2초라고 가정해보자. 노드 A가 0초에 전송을 시작했다. 노드 B는 1초에 채널 사용자가 있는지 감지한다. 이때 Propagation Delay가 2초이기 때문에 노드 B는 노드 A를 듣지 못한다. 노드 B는 채널을 사용하는 사람이 없다고 판단한 후 데이터를 전송한다. 그 후 2초 후에 A의 Propagation Delay이 끝난 후 채널에 존재감을 뿜뿜할 때. 그제서야 B는 충돌이 났음을 알 수 있는 것이다.
CSMA에서는 충돌이 발생한 것을 감지하여도 그 상태에서 바로 취소하는 것이 아니라 노드 A와 B의 데이터 전송이 끝난 후에야 전송을 취소할 수 있다. 어차피 충돌난 데이터는 취소해야 할 데이터니까, 충돌이 감지되자마자 취소하면 더 효율적인 전송이 아닐까?
4. CSMA/CD [Carrier Sense Multiple Access/Collision Detection]
충돌이 감지되자마자 취소하면 효율이 당연히 더 좋다. 따라서 나온 방식이 CSMA/CD다. 충돌이 감지된 짧은 시간 내에 전송했던 데이터를 다 취소시켜버림으로써 채널의 낭비를 줄인다.
위 사진에서 두번째 컴퓨터를 A라 칭하고 네번째 컴퓨터를 B라 칭하자.
노드 A는 0초에 전송을 시작한다. 그 후 t1 시간에 노드 B도 데이터를 전송하기 위해 채널의 사용자를 감지해본다. 그러나 노드 A의 전송은 Propagation Delay 때문에 노드 B에게는 닿지 않는다. 따라서 노드 B는 A의 존재를 모르고 자신도 데이터 전송을 시작한다. 그러다 일정 시간 이 후에 데이터가 충돌났음을 서로 감지한다. 두 노드 A와 B는 충돌을 감지한 순간에 바로 전송을 취소[Abort] 시킨다. 따라서 원래 빨간~노란의 모든 부분이 CSMA에서는 낭비되는 구간이지만 사진 상의 Collision Detect/Abort라 되어있는 시간 만큼만 낭비가 된다. 즉, CSMA보다 낭비되는 시간이 줄어든다.
이러한 CSMA/CD 프로토콜은 현재 이더넷, 즉 우리의 유선 네트워크에서 가장 보편적으로 사용되고 있는 방식이다. 이와 비슷한 CSMA/CA는 무선 인터넷, 즉 WiFi에서 사용하고 있는 방식이다. 해당 방식은 추후에 무선 네트워크를 다룰 때 다룰거지만 CA[Collision Avoidace]라 CD와 하여 얼추 비슷한 형태를 보인다는 것을 일단 알아두며 Random Access에 대한 포스팅을 마치겠다.
'전공 > 네트워크' 카테고리의 다른 글
데이터 링크 - ARP 동작 과정 (0) | 2020.10.18 |
---|---|
데이터 링크- 대표 프로토콜(HDLC, 이더넷, X.25) (0) | 2020.10.18 |
데이터 링크- Multiple Access Protocols(MAC) #3. Taking Turns (0) | 2020.10.16 |
데이터 링크- Multiple Access Protocols(MAC) #1. Channel Partition (0) | 2020.10.16 |
데이터 링크 계층 개요 (0) | 2020.10.14 |