Suhwanc

본 내용은 Computer networking : a top-down approach 책을 바탕으로 정리하였습니다.

 

Index

 

  • 1. P2P applications
  • 2. Video Streaming
  • 3. Streaming Multimedia : DASH
  • 4. CDN

 

1. P2P

 

1.1 P2P architecture

 

p2p는 클라이언트-서버와 함께 통신망의 종류이다. 아마 다들 한 번쯤은 p2p라는 말을 들어보았을 것이다.

보통 대용량 파일을 다운로드할 때 p2p를 이용한다고 하는데, 예를 들어 토렌트를 이용해 영화, 드라마를 다운로드하여 보는 경우가 이에 해당한다. (요즘은 넷플릭스로 다들 봐서 모르는 분들도 계실 것 같다.)

 

아무튼 p2p 구조의 특징은 간단히 생각해서 클라이언트-서버 구조와 반대라고 알면 된다.

 

p2p 특징

  • 항상 서버가 켜져있지 않다.
  • end system(device) 끼리 직접적으로 소통을 한다.
  • 피어들(각 end system)은 IP 주소가 바뀔 수 있다.

 

1.2 p2p vs client-server

 

이 둘의 차이점을 설명할 때는 보통 거의 무한대의 유저들이 있을 경우 그들이 모두 다운로드 받을 때 얼마큼의 시간이 걸리느냐? 를 비교한다. 그럼 이 가정을 이용해 둘의 파일 다운로드 속도를 비교해보자.

 

1) client-server

위 그림에서 us는 서버가 네트워크로 업로드하는 속도. F는 파일의 크기

di, ui는 각각i번째 유저가 다운로드하는 시간, 업로드 시간을 의미한다.

 

client-server 같은 경우, 모든 유저들이 서버에서 파일을 가져가게 된다.

 

그렇다면 총 N개의 파일을 업로드할 때는 NF/us (크기/전송속도) 만큼의 시간이 걸리게 된다.

 

하지만 이게 끝이 아니다. 클라이언트가 네트워크에서 파일을 다운로드 받는 시간이 들기 때문에

di 중 가장 늦게 받는 유저 d(min)을 비교해 F/d(min) 만큼의 시간과 비교해야한다.

 

이 두 과정은 겹칠 수 있기 때문에 총 파일 다운 시간의 이론 치는 max(NF/us, F/d(min)) 이 된다.

 

2) p2p 

 

p2p 도 위 그림처럼 생각할 때 (실제로는 각 유저가 직접 연결되어 있을 것이다.)

 

우선 서버가 네트워크로 파일을 최소 한 번 업로드 해야하기 때문에 F/us

 

가장 늦게 받는 유저 대비 파일 F/d(min)

 

추가로, 전체 파일의 비트 NF bits에 대해 각 피어들의 업로드 속도의 합 NF/(us, sum(ui))

sum(ui)는 각 피어끼리 서비스 공간을 나누기 때문에 발생하는 추정치입니다.

 

이 셋의 max 값이 p2p 총 파일 다운 시간의 이론치가 되겠다.

 

왜냐하면 p2p 에서 각 피어들은 서로 다른 피어들에게 도움을 주기 때문이다. 

따라서, 유저 수가 극단적으로 늘어났을 때 총 다운 시간은 p2p가 client-server 보다 훨씬 빠를 것이다. 

 

둘을 비교한 그래프

 

1.3 p2p의 예시 : BitTorrent

비트 토렌트는 네트워크적 관점에서 p2p 활용의 좋은 예이다. (하지만 불법의 소지가 있습니다!) 

주로 대용량 파일을 공유할 때 쓰이며 여기서 각 파일들은 256kb의 청크들로 나뉘고 각 피어들은 이 청크들을 주고받게 된다. 

중요한 것은 한 파일에 대한 청크들이 각 피어들에 나뉘어져있어서, 다운로드할 때 현재 가지고있지 않은 청크들을 각 피어들에게 요청해 동시에 받게 된다. 이게 P2P의 가장 큰 장점이다.

 

과정은 다음과 같다.

  • 서버는 토렌트에 참가한 피어들을 트래킹(추적) 하고, 피어들의 리스트를 만든다.
  • 유저 pc는 서버에게 각 피어들의 청크 리스트를 받는다.
  • 유저는 피어들에게 요청을 하고, 각 피어들은 그룹을 이뤄 청크들을 주고 받는다.

 

비트 토렌트의 주요 용어들

  • rarest first : 가장 희소성 있는 청크를 먼저 받아 공유한다. (다다익선이기 때문)
  • peer churn : 피어들은 임의로 탈퇴하거나 가입할 수 있다.
  • selfishly, altruistically : 각각 이기적, 이타적이라는 뜻으로 피어들의 특징을 설명할 때 쓰인다.

 

tit-for-tat

비트 토렌트에서 청크를 보낼 때 쓰이는 용어로, 간단히 말하면 이기적인 피어에게 복수한다는 의미이다.

각 피어들은 주고받는 과정에서 10초마다 주변 피어들 중 가장 전송률이 높은 top4를 선정하고

이를 3번 지속해 30초마다 이기적인 피어 대신 이타적 피어들로 교체를 한다.

 

이때 교체 방법은 "choked"에서 "unchoked"로 바꾸는 방법으로

choked는 청크를 안주는 것을 의미하고 unchoked는 그의 반대가 되겠다.

 

비트토렌트는 이러한 방식으로 높은 업로드 속도를 유지할 수 있게 된다.

 

 

2. Video Streaming

비디오 스트리밍은 대표적인 네트워크 애플리케이션으로 우리에게 친숙한 유튜브, 넷플릭스 등이 되겠다.

이들은 두 가지 갈래로 나뉘는데 각각 Broadcastring(방송), VOD로 방송은 직접 송출하니 push 방식을 사용하고, VOD는 클라이언트가 가져와야 하니 pull 방식에 해당한다고 볼 수 있다.

 

유튜브의 전 세계 한 달 이용자 수는 19억 명(2019년 기준), 넷플릭스는 약 2억 명 정도 된다고 한다.

그럼 이들은 어떻게 그런 수많은 유저들을 관리할 수 있는 것일까?

 

이들은 그에 대한 해답으로 분산 구조, 애플리케이션에 따른 다양한 구조를 갖는 방식을 사용하였다.

 

2.1 영상의 특성

 

작년에 한 고등학교에서 영상 편집에 대해 강의를 한 적이 있는데, 어떻게 하면 아이들이 잘 이해할 수 있을까 생각하다

일단 영상에 대한 기본 개념을 먼저 소개하고, 기술들을 설명하기로 했다. 기본적으로 영상이 어떻게 송출되는지를 알아야 나중에 직접 영상을 촬영하고 편집할 때 좀 더 전문적으로 할 수 있을 것 같았기 때문이다.

 

잡소리가 길어졌는데.. 아무튼 영상은 이미지의 연속이다.

우리의 눈은 한 번 본 것이 어느 정도 시간 동안 남는 잔상 효과라는 것이 발생하는데 이를 이용하면

그림이 실제로 움직이는듯한 착시 현상을 일으킬 수 있다. 이것이 영상이 된다.

이미지의 연속

 

네트워크 관점에서 이 영상을 송출할 때는 파일 크기가 너무 크기 때문에 압축을 해야 하는데,

압축 방식에는 공간적, 시간적 방법이 있다.

 

공간적 방법은 사진에 대해 잘게 잘게 나누어 전송하는 방식이며, JPEG 방식을 사용한다.

시간적 방법은 바뀐 부분에 한해서 사진을 여러 개의 프레임으로 나누어 전송하는 방식이다. MPEG 방식을 사용한다.

 

 

2.1 DASH

 

DASHDynamic Adaptive Streaming over HTTP의 약자로, HTTP 기반의 스트리밍이다.

 

보통 영상은 HTTP 서버에 특정 URL을 가지고 저장되어있어, 우리가 영상을 볼 때

클라이언트는 서버와 TCP 연결을 만들어 최대한 빠르게 전송하며 재생을 시작한다.

 

하지만 이 HTTP 스트리밍은 큰 단점이 있는데, 바로 클라이언트의 대역폭이 각자 다름에도 불구하고

모두에게 똑같은 인코딩 된 영상을 보내준다는 것이다.

 

이러한 문제점을 해결하기 위해 DASH라는 방식이 개발되었다.

DASH에서 영상들은 여러 가지 다른 버전으로 인코딩 되며 각각 다른 버전은 비트, 품질 등의 차이점을 갖게 된다.

따라서 낮은 대역폭의 유저는 낮은 품질을 받고, 높은 대역폭의 유저는 높은 품질을 받게 된다.

품질뿐만 아니라 bit rate도 대역폭에 따라 나뉘어 받는다.

 

또한 DASH를 이용하는 경우 HTTP 서버는 다 다른 URL를 가지고 있고, 각 버전별 URL을 제공하는 manifest file을 가지고 있다. 따라서 처음에 클라이언트는 서버에 manifest file을 요청해 버전 정보를 받는다.

이후 특정 URL을 지정한 후 각 chunk들을 요청해 받게 된다.

 

약자로 나오면 당황할 수 있기 때문에 꼭 앞글자 D의 dynamic을 암기해두자!

 

3. CDN

 

3.1 CDN의 기본

 

CDN은 content distribution networks의 약자로 콘텐츠를 효율적으로 전달하기 위해 여러 노드를 가진 네트워크에 데이터를 저장하여 제공하는 시스템이다.

 

수많은 유저들과 수 많은 콘텐츠들 속에서 빠르게 전송하기 위한 방법으로, access network 안에 많은 CDN 서버를 심어놓아, 유저들의 요청에 맞는 캐시가 있으면 바로 주는 방식이다.

 

위 그림은 CDN을 설명하기 위한 그림으로, 위에 각 컴퓨터 모양들이 모두 CDN에 해당하고

왼쪽 집이 클라이언트, 오른쪽이 DASH에 대한 manifest file에 해당한다.

 

클라이언트는 파일을 받을 때 가장 가까운 CDN을 택한다. 단, 그 CDN에 파일이 없거나 혼잡이 심할 경우 다른 CDN을 선택할 수 있다.

 

 

3.2 CDN : over the top

CDN의 "over the top" 방식은 특정 플랫폼에 독립적으로 서비스를 커뮤니케이션하는 방식이다.

즉, 컨텐츠 업체 (예를 들어 넷플릭스)가 유저와 직접 관계를 맺어 인터넷 호스트와 호스트 간의 서비스를 주고받는 방식이라고 볼 수 있다.

이런 방식을 사용하면 CDN의 혼잡을 피할 수 있게 되는데, 따로 CDN을 찾지 않아도 되기 때문이다.

 

 

3.3 CDN 콘텐츠 파일 요청 과정

 

 

  • 1. 클라이언트는 특정 URL을 로컬 DNS 서버에 보내 CDN 주소를 요청함
  • 2. 로컬 DNS 서버는 받은 URL을 통해 어떤 CDN안에 있는 것인지 찾고 CDN 주소를 클라이언트에게 응답
  • 3. 클라이언트는 이제 받은 CDN 서버에 비디오를 요청한다.

 

'Computer Network' 카테고리의 다른 글

6. TCP - transport's view  (0) 2020.06.03
5. Transport layer  (6) 2020.06.02
3. FTP, electronic mail, DNS  (0) 2020.05.28
2. application layer  (2) 2020.05.27
1. 컴퓨터 네트워크 소개  (8) 2020.05.25