본 내용은 Computer Networking: A Top-down Approach 를 읽고 공부한 내용입니다.
1. P2P
1) P2P란?
2) P2P 파일 분배
3) P2P 구조의 확장성
4) 비트토렌토
5) 비트토렌토의 구조 및 소통방식
2. Video Streaming과 CDN(content distribution networks)
1) Multimedia: video
2) Streaming stored video
3) DASH
4) CDN
1. P2P
1.1 P2P란?
항상 켜져있는 기반 구조 서버들에 최소한으로 의존하는 구조이다. 누구나 서버/클라이언트가 될 수 있고, 자유롭게 데이터를 주고받는다.
1.2 P2P 파일분배
클라이언트-서버 파일분배에서, 서버는 파일 복사본을 각 피어들에게 보내야 한다. 이 때 서버에게 커다란 부하를 주고 많은 양의 서버 대역폭을 소비한다.
반면 P2P 파일 분배에서, 각 피어는 수신한 파일의 임의 부분을 다른 피어들에게 재분배할 수 있어서 서버의 분배 프로세스를 도울 수 있다.
1.3 P2P 구조의 확장성
P2P는 확장이 용이하다는 특징을 가진다. Client-Server 구조와 P2P 구조를 비교하기 위해, 그리고 P2P 고유의 자가 확장성을 설명하기위해 우리는 '한 파일을 고정된 수의 피어들에게 분배하는 간단한 양적 모델'로 설명해보고자 한다.
아래 왼쪽 그림에서 보이는 것처럼, 서버와 피어들은 접속 링크로 인터넷에 연결되어 있다. 서버의 업로드 속도를 us로, i번째 피어의 업로드 속도는 ui로, i번째 피어의 접속 링크의 다운로드 속도를 di로 나타낸다. 그리고 분배되는 파일의 크기는 F로, 파일의 복사본을 얻고자 하는 피어들의 수는 N이다.
분배 시간은 모든 N개의 피어들이 파일의 복사본을 얻는 데 걸리는 시간이다.
그럼 이제 오른쪽 그림을 보며 이 둘의 분배 시간을 비교해보자.
- Dc-s
- 서버는 파일 복사본을 N개의 피어 각각에게 전송해야 한다. 따라서 서버는 NF비트를 전송해야 한다. 따라서 파일 분배 시간은 NF/us이다.
- dmin이 가장 낮은 다운로드 속도를 가진 피어의 다운로드 속도이다. 따라서 최소 분배 시간은 F/dmin이다. - Dp2p
- 서버만이 분배 시작 시 파일을 가지고 있다. 이 파일을 피어 커뮤니티에 도달할 수 있도록 하기 위해 서버는 적어도 한 번 파일을 전송한다. 따라서 파일 분배 시간은 F/us이다.
- c-s구조와 마찬가지로 가장 낮은 다운로드 속도를 가진 피어는 F/dmin보다 적은 시간 안에 파일의 모든 F비트를 얻을 수 없다. 따라서 최소 분배 시간은 F/dmin이다.
- 마지막으로 시스템의 전체 업로드 용량은 전체적으로 서버의 업로드 속도와 각 피어들의 업로드 속도를 더한 것이다. 즉 utotal = us + u1 + ...+uN. 시스템은 N개의 피어들 각각에게 F비트를 전달해야만 한다. 따라서 최소 분배 시간은 NF/(us+u1+u2 ...)이다.
둘을 비교한 그래프를 아래에서 확인해보자!
P2P 구조의 경우, 최소 분배 시간에 대한 하한값을 가진다. 아래 그래프에서도 확인할 수 있듯, C-S의 경우 피어의 수가 증가할 때 분배 시간이 선형적으로 계속해서 증가하는 f(x)=ax 모양이지만, P2P의 경우에는, 어느 순간에는 C-S보다 클 수도 있지만, 피어 수가 증가함에 따라 최소 분배시간 상수 a를 넘지 않는 f(x)=ax/(10+x) 그래프를 띈다. 따라서 자가 확장성을 가진다.
1.4 비트토렌토
특정 파일의 분배에 참여하는 모든 피어들의 모임을 torrent(토렌트)라고 한다. 이 토렌트에 참여하는 피어들은 서로에게서 같은 파일 크기의 청크를 다운로드한다. 피어들은 청크를 다운로드하는 동시에 다른 피어들에게 청크를 나누어주어야 한다.
만약 한 피어가 전체 파일을 얻으면 이기적으로 떠날 수도 있고 이타적으로 남을 수도 있다. 이렇게 왔다리 갔다리가 가능한 것을 churn이라고 한다.
1.5 비트토렌토의 구조 및 소통방식
각 토렌트는 트래커(tracker)라고 부르는 기반구조 노드를 가지고 있다. 이 트래커는 토렌트에 참여하는 피어들을 추적한다.
앨리스가 처음 토렌트에 가입할 때 이 트랙커는 참여하고 있는 피어들의 부분집합 50개의 IP 주소를 앨리스에게 보낸다. 이후 앨리스는 50개의 모든 피어들과 동시에 TCP 연결을 설정한다.
주기적으로 앨리스는 그들이 가진 청크 리스트를 요구한다.(requesting chunks) 이들 중 가장 드문 것을 먼저(rarest first) 요구하는 방법을 사용한다. 그리고 앨리스에게 가장 빨리 반응하는 4개의 피어들에게 청크들을 보냄(sending chunks)으로써 보답한다. 이 4개의 피어 집합은 10초마다 수정되며(A,B,C,D->B,A,D,C),
중요한 것은 매 30초마다 앨리스는 랜덤으로 교역 파트너를 정해(E) 교역한다. 이 때 두 피어들이 교역에 만족하면 그들은 서로를 4개의 리스트 안에 넣고 피어들(A,B,C,D) 중 누구 하나가 더 좋은 파트너를 만날 때까지 서로 교역한다. 예를 들면, 만약 B가 더 좋은 파트너를 만나면 (A,C,D,E)로 피어집단이 바뀔 수 있는 것이다. 이 다섯 개(A,B,C,D,E)를 제외한 다른 이웃 피어로부터는 어떠한 청크도 받지 않는다.(choked) 이 방법(tit-for-tat)은 higher upload rate를 항상 유지해준다.
2. Video Streaming과 CDN
2.1 Multimedia: video
비디오는 일련의 이미지로, 초당 24개의 이미지가 출력되는 원리이다. 비디오는 두 종류의 중복이 있으며, 압축 시 공간(spatial) 중복과 시간(temporal) 중복을 가진다. 공간 중복은 한 시점에서 주어진 이미지 내에서의 중복을, 시간 중복은 한 이미지와 다음 이미지가 중복되는 것을 의미한다.
video encoding rate(영상이 1초당 처리하는 데이터 크기)를 일정하게 보내는지/동적으로 변화하는지에 따라 CBR/VBR방식으로 인코딩하며, ISO가 개발한 MPEG 압축 표준으로 압축한다.
2.2 Streaming stored video
클라이언트가 서버에서 파일의 뒷부분을 수신하고 있는 동안에 파일의 한 지점부터 오디오/비디오를 재생하는 것을 의미한다.
2.3 DASH(Dynamic Adaptive Streaming over HTTP)
동적! 적응형!
- server 측
비디오 파일을 여러 chunk로 나눈다. 각 chunk들은 다른 rate들로 인코딩된다..(128kbps, 256kbps, 512kbps, 1mbps, 2mbps, …) 이후 다른 chunk들에 대한 URL들을 client에게 제공 - client 측
server-to-client 대역폭을 계속 측정하여 잘 오고 있는지 확인한다. 각 시점에 따라 원하는 다양한 rate의 비디오를 선택해서 볼 수 있다. 언제/어떤 인코딩 rate으로/어디서(휴대폰, tv..) 볼지 client가 결정할 수 있다!
2.4 CDN(콘텐츠 분배 네트워크)
배경: 다양한 비디오 스트리밍 전송률이 요청되고, 지리적으로 분산된 많은 사용자들이 요청함에 따라 스트리밍 작업에 대한 고민이 시작되었다.
생각1: 하나의 큰 단일 서버에 비디오 저장 -> 😥네트워크 혼잡도 증가, 단일 서버에 의존, 중복된 ISP 통과
생각2: 지역적으로 분산하여 복사본 저장 -> 😊웹 서버의 트래픽 감소, 대역폭 비용을 절감
<작동 과정>
1. VIDEO DNS를 주소 창에 입력하면 해당 DNS에서는 loadbalancing을 사용하여 적절한 CDN의 IP를 알려준다.
2. 이때, CDN 서버에 해당 콘텐츠가 캐싱되어 있다면 해당 컨텐츠와 manifest file을 받게 된다.
3. 캐싱되어 있지 않다면 오리진 서버(netflix의 경우 amazon cloud)는 CDN 서버들에 복사본을 업로드한다.
ex. OTT
에필로그
시험기간 시러 - 빨리 맥주 드링킹하는 그날이 오면 좋겠다~~
'CS > 네트워크' 카테고리의 다른 글
[네트워크] 트랜스포트 계층 - 신뢰적인 데이터 전송 (RDT) (0) | 2023.04.22 |
---|---|
[네트워크] UDP와 TCP (2) | 2023.04.22 |
[네트워크] 애플리케이션 계층-3 (2) | 2023.04.17 |
[네트워크] 애플리케이션 계층-2 (0) | 2023.04.17 |
[네트워크] 애플리케이션 계층-1 (0) | 2023.04.16 |