http://www.kocw.net/home/cview.do?cid=6166c077e545b736
- 무선인터넷이라고 출발지부터 목적지까지 전체가 무선인 것은 아니다. 보통 첫 hop만 무선이고 나머지는 유선이다. 첫 hop은 gateway router까지 보내는 것이므로 link layer와 관련된 내용이다.
- wifi에 대해 중점적으로 다룬다. LTE는 학부 수준을 넘어선다.
wireless network
802.11a,b,n이 wifi에 해당한다. 전송거리는 짧고 속도가 빠르다.
대부분의 우리가 쓰는 무선 네트워크는 infrastructure가 있는 single hop이다.
wireless link characteristics
hidden terminal problem
- 유선 링크는 케이블로 보호받기 때문에 거리가 멀어져도 신호세기가 거의 일정하다
- 무선은 보호받지 못하기 때문에 거리가 멀어지면 신호세기가 지수적으로 감소한다
- A와 B, B와 C는 서로 전송거리가 닿지만 A,C는 닿지 않는 상황이다.
- 이더넷에서 사용했던 CSMA/CD를 사용하려면 다른 host가 전송중인지 알아야 하는데 전송거리가 닿지 않으면 알 수 없다. 이것을 hidden terminalp problem이라 한다.
collision detection
- collision detection을 하려면 자신이 전송할 때 같은 LAN의 다른 host가 전송했다면 그것을 들을 수 있어야 한다
- 무선에서는 자신이 전송하는 것으로 인해 다른 host의 전송이 들리지 않는다(노이즈 처리된다)
- 따라서 collision detection이 불가하다
wifi
- 정식명칭은 IEEE 802.11이다.
- wifi = wireless fidelity, 무선이지만 유선처럼 충실하겠다는 의미다.
wifi LAN 구조
- 하나의 AP(access point)를 BSS(basic service set)이라 부른다.
- BSS는 이더넷 케이블로 스위치, 라우터 등과 연결된다
passive scanning
각 host는 자신 주변에 어떤 AP에 연결할지 어떻게 결정할까?
- passive scanning
- 각 ap는 주기적으로(10회/초) beacon frame으로 자신의 정보를 broadcasting 한다.
- ap의 이름, mac addr등이 담겨있다. beacon을 받으면서 ap의 시그널 세기도 알 수 있다.
- host는 가만히 있고 ap가 beacon으로 보내기 때문에 passive다.
- active scanning 방식도 있는데 잘 사용하지 않는다.
wifi mac protocol : CSMA/CA
- wifi는 2.4Ghz를 사용하며 이것을 11개의 채널로 나눠서 사용한다. 각 ap는 어떤 채널을 사용할지 결정한다.
- wifi 를 사용하려는 host는 ap가 사용하는 채널에 접근하는 것이다.
- ap가 같은 채널을 사용하면 collision domain을 공유한다. 반면 다른 채널을 사용한다면 collison domain을 공유하지 않는다.
- ap1이 ch1, ap2가 ch2를 사용한다면 hostB는 ap1과 ap2에 충돌 없이 동시에 data를 보낼 수 있다.
- 같은 채널을 공유하는 ap간에는 위에서 말하는 CSMA/CA와 RTS, CTS를 사용해 충돌을 처리하는 것이다.
- 유선 이더넷에서는 데이터를 보낸 host가 충돌 감지를 할 수 있다. 그리고 충돌이 발생하지 않으면 제대로 간것을 보장할 수 있다. 따라서 link layer에서는 ack가 없다.
- 반면 무선 link는 충돌은 발생할 수 있지만 충돌 감지를 할 수 없다. 따라서 ack가 필요하다.
wifi에서는 CSMA/CA를 사용한다
- sender
- carrier sense를 해보고 channel이 idle하다면 DIFS만큼 기다렸다가 보낸다
- channel이 busy하다면 random backoff 후 보낸다
- ack를 받아야 정상송신한것으로 판단한다
- recevier
- 프레임을 정상수신하면 SIFS만큼 기다렸다가 ack를 보낸다
- CSMA/CD에서 sender는 송신하다가도 충돌을 감지하면 바로 멈춘다. 하지만 CSMA/CA에서는 충돌을 감지할 수가 없으니 멈출수도 없다. 유선에 비해 무선에서 발생하는 충돌의 피해가 더 크다. 따라서 무선에서는 충돌을 피하기 위한 추가적인 노력이 필요하다
- DIFS보다 SIFS가 짧다. 그 이유는 다른 HOST가 DATA를 보내기 전에 내가 ACK를 먼저 보내야 하기 때문이다. (ACK가 더 중요하다)
RTS-CTS exchange
- rts와 cts라는 control frame을 도입한다
- Ready To Send : 나 너한테 보낼거야
- Clear To Send : 그래 너 나한테 보내
- sender가 충돌 가능성이 있는데도 불구하고 전체 데이터를 한번에 보내기 때문에 비효율이 발생한다. 따라서 조그마한 rts를 먼저 보내보는 것이다.
- A, B가 AP에게 각자 RTS를 보낸다
- RTS 충돌이 발생한다. RTS는 작은 크기의 control frame이므로 피해가 적다. 아무튼 충돌이 발생해서 A랑 B는 CTS를 응답받지 못하고 random backoff 후 다시 RTS를 보낸다. 이 경우 A가 먼저 보내게 되었다.
- AP는 RTS(A)의 응답으로 CTS(A)를 보낸다.
- A는 CTS(A)를 받았으니 DATA를 보낸다.
- AP는 DATA를 잘 받았으니 ACK(A)를 보낸다.
- RTS(A), CTS(A)에는 A가 얼만큼 시간동안 데이터를 보낼지 적혀있다.
- defer 시간동안 B가 데이터를 보내고 싶어서 carrier sense를 하면 channel은 idle 하다. 왜냐하면 A의 전송범위는 B에 닿지 않기 때문이다. 하지만, B는 AP가 보낸 CTS(A)를 받았기 때문에 지금 보내면 안된다는 것을 알 수 있다. defer 시간동안 B는 그냥 잠들어 버린다(power management를 위해)
특수한 상황도 있을 수 있다.
- B가 CTS(A)를 받기 전에 RTS(B)를 보낸다.
- CTS(A)와 RTS(B)간의 충돌이 발생한다. 따라서 B는 CTS(A)를 받지 못한다. CTS(A)를 받지 못하면 A가 얼만큼 시간동안 데이터를 보낼지 적혀있는 정보를 모르게 된다.
- A는 DATA를 보낸다.
- A가 DATA를 보내는 동안 B가 carrier sense를 하면 B 입장에선 idle하다. 따라서 RTS(B)를 보낸다.
- AP 입장에서 A의 DATA와 RTS(B)의 충돌이 발생한다.
- A는 ACK를 받지 못하고 B도 CTS(B)를 받지 못하므로 A, B 모두 다시 RTS를 보내며 경쟁하게 된다.
A와 B가 모두 CTS(A)를 정상수신했더라도 새로운 host X가 추가될 수도 있다.
- 추가된 X는 CTS를 받은적이 없기 떄문에 RTS(X)를 보낸다
- DATA(A)와 RTS(X)의 충돌 발생
이렇게 여러 상황이 발생해서 DATA에 대한 ACK가 안올 수 있다. 그럴 경우 재전송하는데, 재전송은 7번까지만 하기로 정해져 있다. 7번까지 시도하고 ACK가 안오면 해당 FRAME은 포기한다. 이렇게 포기된 FRAME은 TCP ACK도 받지 못할 것이므로 TCP에서 재전송 할 것이다.
wifi frame 구조
주소가 4개다. adr4는 사용하지 않는다
- adr 1 : frame을 받는 interface의 mac주소
- adr 2: frame을 보내는 interface의 mac주소
- adr 3 :payload에 담긴 ip packet을 처리할 라우터의 mac주소
- ap는 특이하다. ap의 왼쪽은 wifi frame(802.11)과 CSMA/CA를, 오른족은 이더넷 frame(802.3)을 CSMA/CD를 사용한다.
- 호스트 (H1) 입장에서는 ap를 안다. 하지만 라우터 입장에서는 ap를 모른다. 스위치와 같다고 생각하면 된다. 라우터는 단지 이 link를 통하면 H1이 있다는 것만 안다.
- ap에서 802.11 frame -> 802.3 frame으로 변환할 때 dest. address는 router의 address, source address는 H1의 address가 된다.
왜 wifi frame에서는 주소값 3개를 사용할까? 주소값이 2개인 상황을 가정해 보자
- src : H1, dest : ap인 경우
- ap까지는 보낼 수 있다.
- ap에서 router까지 보내야 하는데 router의 주소를 알 수 없다
- ap는 link layer device이므로 payload의 ip pkt을 뜯어본다 해도 해석할 수 없다.
- src : H1, dest : router인 경우
- ap 주소가 안적혀 있어 frame을 ap까지 보낼 수 없다.
이러한 이유로 3개의 addr이 필요하다. router까지 도달하면 라우터는 ip pkt을 꺼내서 해석할 수 있다.
반대로 ap로 frame이 들어올 때는 802.3 frame이 802.11 frame으로 변환된다.
- address 1 : H1 (frame을 받을 사람)
- address 2 : ap의 mac addr (frame을 송신하는 곳)
- address 3: 라우터의 mac 주소
host가 frame을 채울 때 이러한 address들을 어떻게 알까?
- address 1 : ap가 처음에 beacon frame을 통해서 ap의 주소정보를 알려준다
- address 2 : host 자신의 주소다
- address 3 : host가 자신의 arp 테이블을 참조해 router의 mac ddr을 알아낸다. 비워져있으면 arp protocol에 의해 채운다.
- host는 처음에 dhcp를 통해 4가지를 알아낸다
- 자신의 ip
- subnet mask
- gwr ip
- local ns ip
- dhcp를 할 때는 frame의 payload의 src ip는 비우게 된다 (자신의 ip를 모르기 때문에), 그리고 dest는 1111로 지정해서 dhcp 서버만 port#에 의해 받게 된다.
- dhcp 서버도 자신의 ip 주소등 정보를 적어 broadcast한다.
- host는 처음에 dhcp를 통해 4가지를 알아낸다
참고로 집에 있는 공유기는 ap + router 에 application layer까지 얹은 것이다.
- frame control이라는 헤더는 2byte이고 subfield로 나누어져 있다.
- type은 frame type을 명시한다 . 4종류이므로 2bit를 사용했다
- duration은 rts, cts에 적는 값으로 내가 data를 얼마동안 송신할 지 예약하는 시간이다.
mobility
유튜브르 보면서 이동하면 ap가 바뀔 것이다. connection이 유지될까 ?
- connection이란 TCP connection, 즉 클라이언트 소켓 - 서버 소켓 간의 연결을 의미한다 .
- connection은 전세계에서 유일하다. 이것은 src ip& port#, dest ip &port#로 유일하게 indexing 된다. 즉 이 값들이 바뀌지 않는 한 영원하다.
- 같은 router 이하의 같은 subnet에서의 ap 이동은 ip가 바뀌지 않는다. 따라서 connection은 유지된다
- switch가 switch table을 참조해서 알맞은 ap로 보내주면 된다. switch table 값이 바뀌어야 한다.
- H1이 ap를 이동하고 더미메세지를 올려 보내면 switch가 변화를 감지하고 switch table을 업데이트 할 수 있다.
하지만 다른 LAN으로 이동하면 ip가 바뀌므로 연결이 끊긴다. LTE로 계속 이동하면서 봐도 안끊기는 이유는 SKT같은 통신사의 NW 범위가 엄청 넓어서 전국 어느곳에나 AP가 있고 연결되는 ROUTER가 같기 때문읻이다.
채널 성능
- HOST와 AP의 거리가 가까울수록 성능이 높다
- 채널 상태는 SNR이라는 지표로 나타낸다. SNR은 Signal to Noise Rate이다. 높을수록 좋다.
- 실제 데이터는 이진 데이터고, 이것을 wave 형식의 channel에 담아 보낸다. 담아 보내는 방식에 따라 transmission rate가 다르다.
- BER은 bit per error rate로 높을수록 안좋다.
- 채널 상태가 좋으면 transmission rate가 높은 coding 방식을 사용한다. 다만 transmssion rate가 높은 coding 방식은 그 방식이 요구하는 SNR을 미치지 못하면 BER이 커진다. (초록색 그래프)
- 그럴 때는 transmisson rate가 더 낮더라도 더 낮은 snr에 대해 ber이 낮은 방식을 사용해야 한다. (빨간색 그래프)
power management
위에서 언급햇듯이, defer 시간동안 B는 잠든다. 효율적인 power management를 위해서다.
cellular network
- 담당 부분을 cell로 나누고 cell 별로 기지국을 심어서 cell의 host드들을 담당하게 해서 cellular network이다
- channel partitoning 방식을 사용한다.
- 2G는 FDMA, TDMA를 사용한다 (시간, 주파수별로 나눔, 충돌이 발생하지 않음)
- 3G는 CDMA를 사용한다
- 각 host에게 code를 부여한다. code를 사용하면 자신의 데이터만 증폭되고 다른것들은 노이즈처리된다.
- data rate에 따라 2g, 3g, 4g를 구분한다. 즉 LTE는 4g에 해당하는 기술 중 하나인 것이다.
celluar network의 구조다
- 사용자 근처에 많은 기지국이 있다
- 피라미드 구조로 연결된다.
- GGSN가 gateway 역할을 한다. dhcp, nat, dns 등 다 GGSN에 있게 된다.
- 예를 들어 SKT는 2개의 GGSN을 갖고 있었다(오래전)
- 이 피라미드 구조에서 사용하는 protocol은 이제까지 배운 것과 다르다. celluar network 고유의 프로토콜을 사용한다.
Mobility
사용자가 network를 넘나드는 상황에서 tcp connection이 안 끊길 수 있는 원리에 대해 알아본다. 다만 현재 인터넷에서는 지원되고 있지 않다는 점에 주의하자. 설명하는 내용들 다 상상속에 존재하는 것이다.
nw 관점에서 moblility란 무엇일까.
- no mobility
- 같은 ap에서만 사용하는 무선 유저
- 중간 mobility
- ap를 넘나드는 이동을 하지만 tcp connection을 유지하면서 이동하는게 아니라 connection 끊고 이동 후 다시 연결하는 사용자
- dhcp로 처리할 수 있다.
- high mobility
- tcp connection을 유지하면서 다른 ap로 이동하는 상황이다.
- nw상에 여러개 ap가 있으면 가능하다. celluar nw는 nw coverage가 매우 크기 때문에 nw상에 여러개 ap가 있어서 connection이 유지된다. 이런 의미에서 celluar nw를 이동통신이라 부르는 것이다.
high mobility를 위해서는 2가지를 해결해야 한다
- 이동하는 대상과 어떻게 연결할 것인가
- 연결을 어떻게 유지할 것인가
용어정리
- 모든 mobile host는 어딜 가나 변하지 않는 permanent address를 갖는다
- permanet address가 속한 home network가 있다.
- home network에 속한 host들을 관리하는 home agent가 있다
- 이동해서 방문한 visited network
- 새로 배정받은 주소를 care-of-address라 한다. permanent address는 유지한다.
- 각 network마다 agent가 있는데, host 입장에서는 foreign agent이다.
- 그리고 이 mobile host랑 소통하고 싶은 correspondent가 있다.
indirect routing
먼저 어떻게 mobile host와 연결할 수 있을까?
- host가 visited network에 방문하면 foreign agent는 home network한테 이 host가 지금 우리한테 와있다고 알려준다. 즉 home agent는 mobile host의 위치를 알게 된다.
- correspondent가 mobile host와 소통하고 싶어서 permanet address로 pkt을 보내면 home agent가 알아서 foreign agent를 통해 mobile host에게 보내주고 답장도 correspondent한테 보내준다.
- correspondent 입장에서는 매우 간편하다.
- 대신 경로를 돌아가야 해서 delay가 일부 발생한다.
어떻게 connection을 유지할 것인가?
- 새로운 network로 이동하면 foreign agent를 통해 home agent에게 연결한다
- 마찬가지로 correspondent가 소통하고 싶으면 마찬가지로 permanent address에게 pkt을 보낸다.
direct routing
먼저 어떻게 mobile host와 연결할 수 있을까?
- 이 방법은 home agent가 correspond한테 visited network의 주소를 알려줘서 correpond가 직접 소통할 수 있게 하는 방법이다.
- 하지만 외부 host인 correspond가 할 일이 늘어난다는 것이 단점이다.
어떻게 connection을 유지할 것인가?
- host가 connection을 맺은 상태에서 이동한다.
- correspond가 anchor FA(첫번째 방문한 nw의 fa)에 요청을 보낸다
- old fa를 통해 new fa로 연결한다.
이러한 mobility 방식은 제안만 되고 사용되지 않는 방법이다.