전공공부/컴퓨터망 (Computer Network)

[컴퓨터망] Link Layer (2) - Multiple Access

jooona 2021. 1. 14. 11:58
반응형

데이터 링크 계층은 노드와 노드 간의 링크에서의 데이터 교환을 담당하는 계층이라고 공부를 했습니다. 이를 위해 자신이 데이터를 전달해야 하는 노드의 주소를 알고 연결을 하고 데이터를 전송해야 합니다. 주소를 가지고 원하는 노드와 연결하는 방법은 다음 글에서 알아보기로 하고, 오늘은 여러 개의 노드가 동시에 하나의 노드에 데이터를 보내고 싶을 때 어떤 일이 발생하는가에 다뤄보려고 합니다.

 

여러 개의 노드가 하나의 노드에 접근을 하고 싶어 한다면, 필연적으로 충돌이 발생하게 됩니다. 그래서 이 충돌을 제어해주는 작업이 필요합니다.

 

이 다중 접근에 대한 해결법은 크게는 3가지 방법으로 분류할 수 있습니다.

 

1. Channel Partitioning: 주파수든, 시간이든 어떤 기준을 가지고 하나의 채널을 여러 부분으로 나누어 이 부분들을 각각의 노드에 할당해주는 방법입니다. 

 

2. Taking Turns: 각각의 노드들이 돌아가면서 순차적으로 접근하는 방법입니다. 

 

3. Random Access: 그냥 랜덤으로 접근해버리는 방법입니다. 그냥 데이터를 전송해야 할 때 바로 전송해버리는 방법도 있고, 어느 정도의 눈치를 보면서 전송하는 방법도 있습니다. 당연히 충돌 발생의 가능성이 존재합니다. 

 

이제 세부적인 프로토콜들을 하나씩 살펴보겠습니다.

 

1. TDMA, FDMA

TDMA는 Time Division Multiple Access, FDMA는 Frequency Division Multiple Access의 줄임말입니다. 위의 3가지 분류에서는 당연히 Channel Partitioning에 포함됩니다. 

 

TDMA는 이름 그대로 시간을 기준으로 채널을 나누어 할당시켜주는 방법입니다. 아래의 그림과 같이 각각의 노드들이 돌아가면서 데이터를 전송할 수 있도록 시간을 할당받습니다. 아래의 그림은 하나의 프레임을 6개의 슬롯(slot)으로 나누고 1,3,4,5번째 슬롯들이 할당이 되어있는 상태입니다. 할당이 되지 않은 슬롯들은 할당이 될 때까지 비어있는 그대로 놔둡니다.

 

TDMA

FDMA는 당연히 주파수를 기준으로 채널을 나누는 방법입니다. 주파수 영역을 원하는 개수대로 나누어 각각의 주파수를 하나의 노드에 할당해주는 방법입니다.

 

2. Polling & Token Passing

Polling과 token passing은 둘 다 Taking Turn 방식의 프로토콜입니다. Polling은 노드들 중 하나를 마스터 노드로 지정하여 각 노드들에 차례를 부여하는 방법입니다. 자세하게는 마스터 노드가 돌아가면서 각 노드에게 현재 해당 노드가 최대로 보낼 수 있는 프레임의 수에 대한 정보를 전송해줍니다. 이 방법은 빈 슬롯이 없어 효율적이지만 마스터 노드에 문제가 생기면 전체 채널이 동작할 수 없으며, 노드와 마스터 노드간의 통신으로 인한 polling latency가 발생하는 단점도 있습니다.

 

Token Passing은 마스터 노드가 없고 token을 노드들 끼리 순서대로 돌아가면서 전달하는 방법입니다. Token을 받았을 때 전송할 프레임이 없다면 token을 다음 노드에게 넘겨야 하며, token을 가진 노드만 프레임을 전송할 수 있습니다. 이 방법에서는 중간에 노드 하나가 오류가 나면 전체 채널이 동작할 수 없다는 단점이 있습니다.

 

3. ALOHA

여기서부터는 Random Access에 포함되는 방법들에 대해 알아볼 것입니다. 첫 번째로 ALOHA라는 방법을 알아보겠습니다. 일반적인 ALOHA는 그냥 보낼 데이터가 있으면 바로 보내버리는 방법입니다. 즉, 각 노드들은 언제든지 데이터를 전송할 수 있습니다. 이러한 형태의 ALOHA를 뒤에서 배울 Slotted ALOHA와 구분하기 위해 Pure ALOHA라고 하기도 합니다.

 

하나의 노드가 데이터를 보내는 동안 다른 노드가 접근해서 데이터를 보내기 시작하면 충돌이 발생하고 데이터의 손실이 일어날 수 있기 때문에, 둘 다 처음부터 다시 전송해야 합니다. 이 때는 바로 다시 충돌이 발생하는 것을 방지하기 위해 일정 시간을 대기한 뒤에 다시 전송을 시작합니다.

 

ALOHA

그래서 일반적인 ALOHA를 사용하면 굉장히 긴 데이터들은 전송하기 굉장히 어려운 상황이 발생합니다. 긴 데이터를 전송하는 중간에 다른 노드가 접근하여 데이터를 전송하면 다시 처음부터 전송해야 하기 때문입니다. Pure ALOHA의 이러한 문제점을 개선시킨 방법이 바로 Slotted ALOHA입니다. 

 

4. Slotted ALOHA

Slotted ALOHA는 시간을 슬롯 사이즈로 분할하고 노드들은 이 슬롯 사이즈에 맞춰 데이터를 보내야 하는 방법입니다. 데이터가 슬롯 사이즈보다 크다면, 슬롯 사이즈로 분할하여 전송해야 하며, 모든 데이터는 슬롯이 시작되는 시점에만 전송할 수 있습니다. 아래 그림을 참고하면 이해가 쉬우실 것 같습니다.

 

Slotted ALOHA

Slotted ALOHA를 사용하면 충돌이 발생하더라도 슬롯 크기의 데이터만 일정 시간 이후에 재전송하면 되기 때문에 Pure ALOHA에 비해 효율적입니다. 실제로 pure ALOHA에 비해 같은 시간 내에 두 배 이상의 전송량을 보여줍니다. 하지만 여전히 충돌 발생 가능성이 높으며, 비어있는 슬롯(idle slot)이 발생할 수 있기 때문에 시간적으로도 비효율적인 면이 존재합니다.

 

5. CSMA/CD (Carrier Sense Multiple Access with Collision Detection)

CSMA란 전송 이전에 채널을 한 번 살펴보는 것을 말합니다. 채널이 비어있다면 데이터를 전송하고, 채널을 다른 노드가 사용하고 있다면 전송을 연기하여, 다른 노드의 전송을 방해하지 않는 방법입니다. 하지만 비어있다고 판단하더라도 다른 노드의 전파 지연(propagation dalay) 등과 같은 이유로 비어있는 것처럼 보이지만 실제로는 사용되고 있는 채널일 확률이 존재합니다.

 

이 중 여러 노드가 다중으로 데이터 전송을 시도할 때 충돌을 탐지해주는 방식을 CSMA/CD라고 합니다. 충돌 탐지는 우선 망에 전파를 흘려보내었다가 다시 받았을 때, 자신이 보낸 전파와 동일하다면 망이 현재 비어있다고 판단할 수 있고, 조금 변해서 돌아왔다면, 다른 전파와 충돌하여 변한 것으로 인지하고 현재 망이 사용 중이라는 결론을 내는 방식으로 진행됩니다.

 

CSMA/CD의 충돌 제어 방식에는 여러 종류가 있습니다.

 

첫째로 1-Persistent CSMA는 현재 채널이 비어있다는 것을 감지하면 1의 확률로 (100% 확률로) 채널이 완전히 비어있다고 판단하고 바로 데이터를 보내버리는 방법입니다. 현재 가장 많이 사용되는 방법입니다.

 

두 번째는 Non-Persistent CSMA입니다. 이 방법은 채널이 비어있더라도 충돌이 반드시 일어날 것이라고 판단하고 임의의 시간만큼 무조건 대기한 뒤 데이터를 전송하는 방법입니다. 충돌은 확연히 줄어들지만, 대기 시간이 길어집니다.

 

마지막으로 P-Persistent CSMA입니다. 위의 두 방법의 중간 정도로 볼 수 있습니다. 비어있을 때 정말 비었을 확률을 체크하여 데이터를 지금 보낼지 조금 대기할지 판단하는 방법입니다.

 

6. CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance)

유선망에서는 충돌의 검출이 쉽게 가능하지만, 무선망에서는 충돌 감지가 거의 불가능하기 때문에 가능한 한 충돌을 회피하는 방법을 많이 사용합니다.

 

자신의 데이터를 전송하기 전에 우선 무선망을 살피고, 회선이 비어있다고 판단해도, 우선 정해진 시간만큼 대기하게 됩니다. 이 때는 어떤 난수를 발생시켜, 그 값만큼 기다리게 되고, 이 기다림 이후에 망이 사용 중이라면, 점차 기다리는 시간을 늘려가며 다시 대기하게 됩니다.

 

 

반응형