IEEE 802.11 : multiple access
Wireless Link Characteristics
물리적인 차이로 인해, 유선과 무선에서 발생할 수 있는 문제도 다릅니다.
유선에서는 신호가 케이블을 통해 전달되어 외부 noise가 차단되기 때문에 안정적이지만, 무선은 신호에 대한 간섭이 많고 보호받지 못하는 점과, 거리가 늘어남에 따라 신호 세기가 급격히 감소한다는 리스크가 있습니다.
그런 리스크 때문에, Hidden terminal problem와 Signal attenuation의 문제가 생깁니다.
Hidden terminal problem은 통신하려는 두 무선 단말기 간에 서로 볼 수 없는 중간 단말기로 인해 발생하는 문제입니다.
위 상황을 예시로 들면 A와 B와 C는 순서대로 70m 거리에 위치해 있다고 가정해보겠습니다. 그런데 전송 반경은 100m입니다.
A와 B는, 그리고 B와 C는 서로의 시그널을 탐지할 수 있지만, A와 C 사이는 140m이기 때문에 서로 충돌을 감지할 수 없습니다. 그래서 A와 C는 서로 있는지 모르는 상황이고, A와 C가 동시에 B에게 데이터를 전송하면, B입장에서는 A와 C의 데이터를 동시에 받아 충돌이 발생해 데이터가 유실되는 것입니다.
Signal attenuation은 무선 신호가 거리에 따라 약해져, 멀리 있는 host는 신호를 들을 수 없는 상황을 말합니다.
그래서 위와 같은 문제들이 나타나기 때문에 Collision Detection가 불가능하다는 문제가 생깁니다. 유선에서는 충돌이 생기면 상대방으로부터 확실한 정보를 외부 방해 없이 얻을 수 있어 feedback도 필요하지 않습니다. 그래서 유선에서는 CSMA/CD로 충돌을 탐지했습니다. 하지만 무선에서는 유선 링크 상황에서 배운 CDMA/CD를 그대로 사용할 수가 없습니다.
그래서 CSMA/CD를 쓸 수 없으니, 아예 처음부터 충돌을 피해야겠다고 해서 CD(Collision Detection)에서 CA(Collision Avoidance)를 만든 것입니다.
CSMA/CA ( IEEE 802.11 MAC Protocol )
충돌을 감지할 수 없으므로 충돌을 감지하지 않고 회피하는 방식입니다.
앞서 살펴봤듯, 무선 링크에서는 충돌 감지가 어렵기 때문에 보낸 프레임이 제대로 도착했는지 상대방이 알려주어야 합니다. 그래서 유선에서는 없던 ACK가 필요합니다. 여기서 ACK는 TCP에서의 ACK와는 다른 개념입니다. TCP에서는 end-to-end ACK 였다면 무선 링크에서는 LinkLayer ACK를 의미합니다.
CSMA/CA 방식의 순서는 아래와 같습니다.
1. sender는 데이터를 전송하기 전 채널의 상황을 확인합니다. 채널이 사용되고 있지 않음이 감지되면 DIFS(Distributed Inter-Frame Space)라는 짧은 시간동안 기다린 후 전체 프레임을 전송합니다.
2. 만약 채널을 다른 사용자가 사용중이라면 임의의 백오프(Back-off)시간만큼 기다렸다가 프레임을 전송합니다
3. 백오프(Back-off)시간 이후 다시 채널을 감지하는데, 채널이 조용하면 데이터를 전송합니다. 이때 CSMA/CA는 feedback을 받습니다.
여기서 ACK를 받았을 때만 보낸 프레임이 다 도착했다고 보고 다음 프레임을 보냅니다. 성공적으로 데이터를 보내면 receiver는 SIFS라는 시간만큼 기다리고 ACK를 보냅니다. SIFS가 존재하는 이유는 DIFS가 기다리는 시간보다 먼저 ACK를 보내기 위해서 존재합니다. 이렇게 다시 sender가 ACK를 받는다면, 성공적으로 통신한 것으로 해석합니다.
만약 ACK가 없을 경우에는, 충돌이 발생했다고 판단하여 백오프 시간을 2배로 늘려 다시 random back off 시간을 count down 후 DIFS만큼 채널의 상태를 확인하고, 또 채널이 조용하다면, 데이터를 다시 전송하게 됩니다.
CSMA/CA RTS-CTS exchange
위에서 다룬 CSMA/CA 프로토콜은 피드백이 오기 전까지 충돌 여부를 모르고, 실제로 충돌이 일어나도 계속해서 프레임을 보내게 되므로 시간 자원이 많이 낭비된다는 단점이 있습니다. 또, 다른 호스트들과 경쟁적으로 ACK를 받기 위해 재전송이 계속해서 일어나야만 합니다.
따라서 충돌을 줄이기 위해 아래와 같은 RTS-CTS라는 방식을 추가로 적용해 개선합니다.
RTS(Request To Send)는 data에 비해 아주 작은 패킷을 말합니다. 그리고 CTS는 호스트가 보낸 RTS에 대해 AP가 보내는 응답으로 브로드캐스트로 전송되는 패킷입니다.
sender가 데이터를 보내서 충돌이 발생했는데, 그 데이터가 양이 많다면, 그만큼 유실되는 데이터의 양도 많게 됩니다. 그래서 RTS라는 아주 작은 패킷을 data를 전송하기 전에 먼저 전송합니다. 만약 충돌이 발생하더라도 sender는 많은 data 대신 RTS를 잃게 되어 충돌이 발생해도 크게 손실이 생기지 않게 하는 것입니다.
만약 RTS를 보냈는데 충돌이 발생하지 않았다면 receiver는 CTS를 sender에게 전송합니다. RTS를 보낸 호스트 외의 다른 호스트들은 이 CTS를 듣고 전송하려던 것을 멈추고 대기하게 됩니다.
만약 AP가 CTS를 보내는 중에 다른 호스트가 보낸 RTS가 충돌되어 섞이면 noise가 발생하게 됩니다. 이럴 경우 RTS를 다시 보내게 되는 과정을 반복하는데, 사람(호스트)이 많을 수록 충돌이 많아지고 재전송이 그만큼 발생하여 느려지게 됩니다.
재전송은 최대 7번까지 해보고 안되면 포기하게 되는데, 포기된 프레임은 이대로 전송되지 않는 것이 아니라 해당 프레임은 TCP 층에서 다시 통신되므로 TCP에서 다시 내려와 해당 과정이 다시 반복됩니다.
참고자료
[컴퓨터 네트워크 - 한양대학교 이석복 교수님]
http://www.kocw.net/home/cview.do?cid=6166c077e545b736
https://the-square-of-y.tistory.com/224
https://blog.naver.com/ds4ouj/222374390860
https://inyongs.tistory.com/80
Computer Networking _ A Top Down Approach, 7th
'CS > Network' 카테고리의 다른 글
[네트워크] 무선이동 네트워크(4) - Cellular Network (0) | 2024.03.05 |
---|---|
[네트워크] 무선이동 네트워크 (3) - IEEE 802.11 Frame (0) | 2024.03.02 |
[네트워크] 무선이동 네트워크 (1) - Wireless Network 소개와 IEEE 802.11 LAN (0) | 2024.02.28 |
[네트워크] Switch (0) | 2024.02.28 |
[네트워크] ARP Protocol (0) | 2024.02.27 |