Wireless
무선 네트워크는 기본적으로 유선 네트워크 인프라가 필요하다. 여기에 base station이 하나 연결되어 base 주위로 무선 네트워크 영역이 구성된다. 우리가 흔히 얘기하는 ap(access point)가 이를 가능하게끔 한다. ap는 무선 신호를 제공하는 장치라고 보면 된다.
802.11
무선 네트워크에서는 다양한 표준이 동시에 사용되는데 그 중 이름에 802.11이 붙는 애들이 우리가 흔히 말하는 wi-fi이다.
표준별로 통신 가능한 거리나 대역폭에 따른 속도가 상이하다.
ad hoc은 네트워크 인프라 없이 host들 끼리 직접 네트워크를 구성하는 것이다. 대부분의 공유기에 포함된 기능이고 라우터나 ap 없이 연결이 가능하나 쓸 일이 거의 없다..
Characteristics of Wireless link
무선 연결의 특성에 대해 살펴보자. 먼저 단점(?)들이다.
1. 거리나 매질에 따라 신호의 세기가 약해진다.
2. 다른 device들에 의한 신호 간섭을 받는다. 집에서 전자레인지만 사용해도 wifi에 간섭한다.
3. 송신을 하면 여러 객체들에 의해 다양한 신호 복사본들이 생긴다.
1,2,3을 보면 단점 같지만 요즘은 모두 극복했고 오히려 장점으로써 사용하는 부분도 있다고 한다.
다음으로 우리가 앞서 배운 QAM과 연관된 특성이다.
SNR은 signal-to-noise ratio의 약어로 신호 대 노이즈의 비율이라고 한다.
즉, SNR이 높으면 신호가 잡음보다 훨씬 강해 품질이 좋다고 받아들일 수 있다.
BER은 bit per error의 약어로 오류율로 해석할 수 있다.
위의 그래프를 보면 QAM이 높을수록 낮은 에러를 위해 더 높은 SNR이 필요하다. 하지만 그만큼 더 강력한 파워가 필요하고
실제로는 SNR이 주변의 영향으로 시시각각 변하기 때문에 QAM을 가변적으로 사용한다고 한다.
다음은 Hidden terminal problem이라고 하는 특성이다.
다음과 같이 A와 C가 B라는 ap에 의해서만 연결되고 둘은 산과 같은 지형에 의해 가려져 있다고 하자. 위에서 본 전파의 특성에 의해 A와 C의 신호 세기 그래프는 서로에게 도달하기 어렵다.
그러면 A는 B랑만 통신이 가능하고 C도 B랑만 통신이 가능하다. 하지만 CSMA가 동작을 못하기 때문에 만약 A와 C가 B로 동시에 신호를 보낸다면 충돌이 일어날 것이다. 이를 hidden terminal problem이라고 부른다.
IEEE 802.11 wireless LAN
IEEE라는 기관에서 발의한 무선랜 표준이다.
max data rate나 range, frequency 모두 여러 사정에 의해 법적으로 제한되어 있다. 전부 다중 엑세스를 위해 CSMA/CA를 사용하며 위에서 말한것과 같이 base station과 ad hoc 전부 설정 가능하다.
IEEE 802.11에서는 물리 계층과 링크 계층을 각각 한 번씩 더 나누어 아래와 같은 sublayer를 만들어 사용한다. 형태는 다음을 참고하자.
우리가 흔히 말하는 ap는 유선을 무선으로 연결하고자 개발된 device로 base station의 기능을 한다. NAT와는 의미나 기능이 다르니 혼동하지 말자. 기본적으로 Basic Service Set(BSS)라 칭하고 스위치나 라우터에 데이터를 보낼 때 BSS id를 붙여 영역을 알린다. BSS들끼리 이더넷으로 연결되어 있다면 이들을 ESS라고 칭한다.
우리가 가끔 카페나 ktx에서 wifi에 비밀번호가 없지만 연결이 안되던 때가 있지 않은가? 이는 ap에서 허용을 안해줘서 그렇다.
우리가 모바일 디바이스로 wifi에 연결하기 위해서는 ap와 associate하는 과정이 꼭 필요하다. 여기에는 ap와 통신하기 위한 beacon frame이 존재하고 ap의 이름(SSID)이나 ap device의 MAC 주소가 포함된다. 보통 DHCP 방식으로 ap 서브넷의 주소를 할당받는다. 그림으로 보면 아래와 같다.
authentication request(비밀번호로 허용을 먼저 요청) 이후 association request(ap 허용 요청)하여 요청 수락을 모두 받으면 wifi에 연결이 완료된다.
authentication 알고리즘에는 Opened system이나 shared key(WEP, WPA, WPA2)가 있다.
밖에서 통신에 대한 광고를 보면 2.4GHz와 5GHz 대역폭에 대한 것을 많이 보았을 것이다. 이들의 frequency domain 그래프를 보면 아래와 같다.
기본적으로 2.4GHz 채널에서는 최대 3~4개의 독립적인 채널이 구성 가능하고 나머지는 전부 중첩이 일어난다.
하지만 5GHz 채널에서는 많은 수의 독립적인 채널이 구성 가능하고 가능한 수를 넘어가는 일도 드물다고 해서 중첩도 없고 상대적으로 덜 혼잡하다고 한다. 이래서 5GHz가 속도가 빠르다고 홍보하는 것이다.
다중 접근을 시도하면 충돌을 피하기 위해 802.11도 마찬가지로 CSMA 방식을 주로 사용한다. 하지만 위에서와 같이 hidden terminal의 상황이나 신호가 너무 약해져 충돌을 감지하지 못해 미처 피하지 못하는 상황이 생길 수도 있다. 이를 해결하기 전에 먼저 wifi에서는 어떤 프로토콜로 데이터를 송수신하는지 알아볼 필요가 있다.
IEEE 802.11 MAC Protocol:CSMA/CA
ap는 기본적으로 multiple device 통신인 경우가 대부분일 것이다. 그러면 이들의 송수신과정을 교통정리를 해줘야 충돌이 일어나지 않는데 이 때 CSMA/CA 방식으로 통신한다. 아래와 같다.
먼저 용어정리를 하면 DIFS, PIFS, SIFS는 대기시간이고 오른쪽으로 갈수록 대기시간이 짧다.
idle는 서버가 현재 대기상태로 free하다고 생각하면 된다.
CW는 contention window의 약자로 random backoff 방식에서 무작위로 숫자를 정하는 범위라고 생각하면 된다.
이는 2^4-1인 15부터 시작해 최대 2^10-1인 1023까지 늘어날 수 있고, 특정 숫자로 정해지면 *9 us(nano second)만큼의 대기시간 이후 전송이 시작된다고 보면 된다.
이제 과정을 보자. 먼저 채널의 상태를 감지한다. 이 상태를 감지하는 시간이 DIFS이다.
만약 대기상태라면 즉시 data를 보내고 ACK을 기다린다.
바쁜 상태라면 대기상태가 될 때까지 기다린다.
이후 또 다시 채널의 상태가 어떤지 감지하고 바쁜 상태라면 또 다시 위의 sequence를 반복한다.
대기상태라면 [0, CW] 내에서 특정 숫자를 선택하여 타이머를 만들고 순서대로 전송을 시작한다.
이 때 전송되지 않는다면 잔여 time를 얼리고 먼젓번의 전송이 끝나면 다시 DIFS 대기 후 time를 해제해 그만큼의 시간을 기다린 후 전송한다. 충돌이 일어난다면 CW의 값을 증가시켜 충돌이 일어난 station끼리 다시 랜덤으로 수를 선택하여 경쟁한다.
이를 도식화하면 아래와 같다.
DIFS동안은 어떠한 전송도 일어나지 않는다.
위에서 sequence를 살펴보면
1. station 3이 전송된다.
2. station 1은 busy를 감지하여 대기상태이다.
3. station 1, 2, 5는 경쟁 시작 전 DIFS 대기상태이다.
4. 세 개가 랜덤 번호를 뽑는다. station 1은 3을 station 2는 1을 station 3은 2를 뽑았다고 가정해보자.
5. 9*1us 이후 station 2가 먼저 전송된다. 이후 station 1과 station 3은 각각 9*3us와 9*2us의 대기시간이 있는데 station 2가 전송될 때까지의 9*1us만큼의 시간이 지난 후 cold 상태가 되어 각각 9*2us, 9*1us만큼의 지연시간이 남아있다.
6. 이 사이에 station 4가 데이터를 받아 와 같은 경쟁 상태가 되었다. random backoff에서 1의 숫자를 뽑아 station5와 충돌이 발생하였다. 이러면 station 4와 station 5의 CW는 2^(4+1) -1인 [0, 31] 사이에서 둘끼리 random backoff로 전송할 것이다.
7. DIFS 이후 station 1은 그대로 전송을, station 4와 station 5는 경쟁을 시작한다.
Frame Priorities
위에서 정리한 SIFS, PIFS, DIFS는 오가는 데이터의 중요도에 따라 대기시간을 달리한 것이다.
ACK과 CTS가 가장 우선순위가 높아 ACK이나 CTS를 송수신 할때에는 SIFS(가장 짧음)이다. msg가 잘 도착했다는 응답이기 때문이다.
다음으로, ap에서의 beacon frame과 같은 경우 자신의 존재를 알려야 통신이 가능하기 때문에 PIFS의 두번째 우선순위를 가진다. 즉, ACK보다는 우선순위가 낮지만 일반적인 전송에서 보다 우선순위가 높다.(대기시간이 SIFS 다음으로 짧다) BSS, ESS 등이 여기에 속한다.
마지막으로 CSMA/CA가 우선순위가 가장 낮아 가장 필요시간이 긴 DIFS이다.
AC(Avoiding Collisions)
위와 같은 프로토콜에서 충돌을 회피(avoid collision)하기 위해 송신자는 먼저 짤은 패킷을 주고받아 서로의 상태를 확인한다. RTS (request to send)와 CTS(clear to send)가 있다. 송신자가 RTS를 bs(base station)에 보내면 bs는 브로드캐스트 방식으로 CTS로 응답을 하는 방식이다. 하지만 위와 같은 프로토콜임에도 불구하고 위에서 보았던 hidden tunneling problem이나 random backoff에서 동일한 값을 선택하게 되어 충돌이 발생할 수 있다. 이를 피하기 위해 RTS-CTS exchange에 대해 알아볼 것이다.
RTS-CTS exchange
Hidden tunneling problem을 직면하고 있는 상황을 보자. RTS-CTS는 일종의 핸드쉐이킹 과정이다. A와 B가 동시에 ap로 RTS를 보내 충돌이 일어났다. 이 때 A와 B는 서로의 상황을 알 수 없으므로 CTS응답이 오지 않으면 충돌이 일어났음을 감지하고(이를 virtual carrier sense라고 한다.) 바로 random backoff 알고리즘으로 한 쪽에서 데이터를 전송할 것을 예약한다. CTS(A)를 받았다고 해보자. 그러면 이제 DATA(A)가 전송될 것이고 전부 완료되면 ACK(A)를 ap가 각각 A와 B에게 보내 충돌을 회피한다.
하지만 위와 같은 방법은 충돌 가능성이 낮거나 보내고자 하는 데이터가 RTS나 CTS와 크기가 비슷하다면 핸드쉐이킹 과정에서 여러 번 msg를 주고받아야 하기 때문에 보통은 비효율적이고, 전송해야 하는 데이터가 RTS나 CTS보다 월등히 길 때나 히든터미널 문제를 직면했을 때와 같은 특정 상황에서효과적이다.
802.11 frame:addressing
wifi에서 msg(RTS, CTS, ACK, data)에 붙는 MAC 헤더를 살펴보자. 총 네 개의 주소가 들어가는데, 앞의 세 개만 다룰 예정이다.
구조는 아래와 같다.
address 1에는 받는 사람(수신자)의 주소가 들어간다.
address 2에는 보내는 사람(송신자)의 주소가 들어간다.
address 3에는 기타 필요한 정보가 들어간다. 예를 들어 최종 수신자의 주소나 원래 송신자의 주소이다.
예시를 보면 H1에서 R1으로 데이터를 보낸다면 address 1에는 1차 수신지인 MAC addr이, address 2에는 송신지인 H1 addr이, address 3에는 최종 도착지인 R1의 주소가 들어간다. 이 때 ap에서는 MAC 도착지 주소로 R1이, MAC 소스 주소로 H1의 MAC 주소가 들어간다. (여기에서는 MAC 주소를 사용한다는 것을 기억하자) 반대로 H1이 데이터를 수신할 때에는 위와 순서가 반대로 되고 address 3의 주소는 발원지로 될 것이다.
'cs > 데이터통신' 카테고리의 다른 글
CSMA와 이더넷 스위치 (1) | 2024.12.06 |
---|---|
Link layer (0) | 2024.12.06 |
Physical layer: Signals (0) | 2024.12.02 |
Network layer: control plane (1) | 2024.12.01 |
Router (0) | 2024.11.30 |