Multiple access protocols
link에는 두 가지 타입이 있다.
- point to point(PPP) : dial-up access, 이더넷 스위치, 호스트 사이에 사용. 공유하지 않는다.
- broadcast : shared wire or medium. 공유한다.
하나의 브로드캐스트 채널을 공유한다.
동시에 전송이 발생하면 서로 간섭이 일어날 수 있다.
multiple access protocol의 가장 이상적인 조건은 다음과 같다.
broadcast channel이 R bps일 때
- 하나의 노드가 전송하려한다면 R 속도로 전송할 수 있다.
- M개의 노드가 전송하려 한다면 평균 R/M 속도로 전송할 수 있다.
- 전송을 조정하는 특정 노드가 없다.
- 클락 동기화를 하지 않는다.
- 간단하다.
이 조건을 달성하기 위한 여러 방법들이 나왔다.
- channel partitioning : 채널을 작은 단위로 나눈다.
- random access : 작은 단위로 나누지 않고 충돌을 허용한다. 대신 충돌이 일어나면 회복할 수 있다.
- taking turns : 자신의 차례를 기다린다.
Channel partitioning
TDMA (time division multiple access)
TDMA 방식은 시간을 작은 단위로 쪼갠 것이다.
고정적으로 할당 받은 슬롯을 사용한다.
그런데 이 방식은 낭비가 생길 수 있다.
만약 주황, 보라색 슬롯만 본래 패킷이 있다면 아래와 같이 보내게 된다.
시간을 나누었기 때문에 위와 같은 낭비가 발생할 수 있다.
FDMA (frequency division multiple access)
FDMA 방식은 주파수를 작은 단위로 쪼갠 것이다.
고정적으로 할당 받은 주파수 대역폭을 사용한다.
CDMA (code division multiple access)
모든 유저가 데이터를 같은 시간, 주파수로 주고 받는다면 코드가 다르기 때문에 통신이 가능하다.
자신과 관련 없는 데이터는 코드가 다르기 때문에 무시한다.
이러한 channel partitioning 방식은 부하가 높을 때 효율이 좋고 부하가 낮을 때 효율이 떨어진다.
Random access protocols
노드가 패킷을 보낼 때 full channel data rate를 사용한다.
만약 두 개 이상의 노드가 전송하려고 한다면 충돌이 발생한다.
다음은 random access MAC protocol의 예시이다.
slotted ALOHA
- 모든 프레임의 사이즈는 같다.
- 시간을 같은 사이즈의 슬롯으로 나눈다.
- 슬롯이 시작할 때만 전송할 수 있다.
- 노드들은 동기화되어야 한다.
- 두 개 이상의 노드가 전송할 때 모든 노드가 충돌을 감지한다.
충돌이 발생하지 않았다면 그 다음 슬롯에도 새로운 프레임을 보낸다.
발생했다면 랜덤한 슬롯의 개수만큼 기다린다.
장점
- 하나의 노드는 계속 full rate로 보낼 수 있다.
- highly decentralized
단점
- 슬롯을 낭비하게 된다.
- 클록 동기화
pure ALOHA
슬롯을 가지지 않기 때문에 충돌 확률이 증가한다.
CSMA (carrier sense multiple access)
Listen Before Transmit
채널이 혼잡하다고 판단하면 전송하지 않는다. 그렇지 않다면 모든 프레임을 전송한다.
다른 전송을 방해하지 않는다.
그러나 충돌히 여전히 일어날 수 있다. 만약 전파 지연이 발생하면 두 노드는 서로의 전송을 알 수 없을 수 있다.
충돌이 발생하면 패킷 전체가 망가진다.
CSMA/CD (collision detection)
전송을 하다가 충돌을 감지하면 해당 전송을 멈추기 때문에 채널 낭비를 줄일 수 있다.
wired LAN에서는 보낸 신호의 세기와 받은 신호의 세기를 측정하는 방식을 사용하여 에러를 감지하고 쉽다.
wireless LAN에서는 에러를 감지하기 어렵다.
이더넷 CSMA/CD 알고리즘은 다음과 같다.
- NIC가 데이터그램을 받아서 프레임을 만든다.
- 채널 혼잡도를 감지하고 프레임을 보낸다. 만약 혼잡하다면 괜찮아질때까지 기다린다.
- 다른 전송을 감지하지 않고 전체 프레임을 보낸다.
- 전송 중 다른 전송을 감지했다면 버리고 jam signal을 보낸다.
- 버렸다면 NIC는 binary backoff에 들어간다. m번 충돌이 일어나면 { 0, 1, 2, ... , 2^(m-1) } 중에서 k를 고르고 k*512bit times 만큼 기다리고 2번으로 돌아간다.
이러한 random access방식은 부하가 낮을 때 효율이 좋고 부하가 높을 때 효율이 떨어진다.
Random access protocols
polling
master 노드가 전송을 하려는 slave 노드에게 token을 전달해준다.
poll을 받은 노드는 전송을 시작하고 다른 노드들은 자신에게 token이 올 때까지 기다린다.
token passing
polling과 달리 외부에서 전송을 제어하는 노드가 없다.
token을 옆 노드로 전달해주는 형태이다.
token을 받았을 때 전송을 해야한다면 전송을 하고 전송을 할 필요가 없다면 다음 노드로 token을 넘겨준다.
'공부 > Network' 카테고리의 다른 글
[Network] swtich와 VLAN (0) | 2023.06.28 |
---|---|
[Network] ARP와 이더넷(Ethernet) (0) | 2023.06.26 |
[Network] Link layer, error detection (parity, CRC) (0) | 2023.06.22 |
[Network] SDN(Software Defined Networking) (0) | 2023.06.14 |
[Network] AS, OSPF, BGP (0) | 2023.06.12 |
댓글