CS/Network

P2P

WakaraNai 2021. 10. 15. 23:37
728x90
반응형

 

이전처럼 server-client 구조가 아님

 

Pure P2P 구조

  • 서버가 항상 켜져 있지 않음
  • end system == peer 간 직접 통신
  • peer는 간헐적으로 네트워크에 연결되고 IP 주소가 시시각각 바뀜
  • ex

 

File Distribution : client-server VS P2P

질문 : 하나의 서버로 n명에게 F 크기의 파일 보내기

 

 

File Distribution : client-server

서버가 각 사용자에게 차례대로 전송

한 개를 전송하는 데 걸린 시간 = F/us

n 개라면 N*(F/us) (N에 따라 linear하게 증가)

 

dmin이 클라이언트의 다운로드 속도라면

클라이언트가 다운받는데 걸린 시간  = F/dmin (상수)

 

서버가 업로드하고 클라이언트가 다운로드하는 것은 병렬적으로 할 수 있기에 둘 중 큰 것으로

Dc-s : client-server 방법으로 F를 N명에게 분배하는데 걸린 시간

(N에 따라 linear하게 증가)

 

속도는 해당 파일을 server upload capacity에 대해, client download capacity에 대해 각각 나눔

서버는 n명에게 보내야 하고 서버는 한 사람으로부터만 받음

N*F/us - server upload하는데 걸린 시간

F/dmin - 클라이언트가 download받는 데 걸린 시간

이 둘이 동시에 발생 가능해서 둘 중 큰 쪽을 따라감

 

여기에  부등호가 들어가는 이유는,

첫 출발은 upload와 download가 동시에 딱 시작하지 않을 때가 있어서

등호 뿐만 아니라 크다 표시도 해야 함

 

 

File Distribution : P2P

최소 한 개를 업로드하는데 걸린 시간 = F/us

클라이언트가 다운로드 받는데 걸린 최대 시간 = F/dmin

업로드해야 하는 총량이 N*F bit를 업로드하는데 걸린 최대 시간 =

  • us는 상수 : server upload capacity
  • N이 증가하면 분자 속 N은 증가, 분모 속 시그마 ui도 더 많은 대상을 더하느라 증가하기에
  • 분모 분자 둘 다 증가하므로, 일정 시간을 유지할 수 있게 됨
  • n이 충분히 커지면 F/us 무시하고 이 항 때문에 전체 시간이 결정됨



서버가 최초로 파일을 업로드하면

받기 시작한 클라이언트 입장에서 업로드에 같이 참여할 수 있고,

- 서버가 업로드하는 일,

- 클라이언트가 업로드하는 일,

- 클라이언트가 다운로드받는 일 

이 3가지 일은 동시에 발생

 

서버가 file을 최초로 업로드하는 일

클라이언트가 다운로드 하는 일

업로드할 전체 양이 업로드 되는 일

 

완벽히 이 세가지 일이 동시에 시작하지 않기 때문에 등호가 아닌 부등호로 들어감

 

 

client-server VS P2P

n : client의 수

client의 download capacity는 영향을 미치지 않도록 충분히 크다고 함 (dmin>=us)

무튼 P2P를 쓰면 n이 증가하더라도 client-server에 비해 급격히 증가하지 않음

 

u = client upload rate

us = server upload rate = 10u

dmin = client download rate

# NF/us 와 F/dmin 비교 -> dmin이 us보다 크므로 더 작음

# Dc-s = NF/us = N * 0.1hour

 

 

n=1 일 때

F/10u = F/u*0.1 = 0.1

 

 

n=10일 때 

 

서버 10us이고 client-server에서

upload capacity는 10u,

 

 

p2p에는 사용자마다 10us 추가 되어

p2p는 10u+10u(10명의 사용자라서) => 딱 두 배

(20명이었다면 10u + 20u)

 

보내야할 총량이 10F이니

c-s에서 10F/10u = 10/10 * F/u = 1

p2p에서 10F/20u = 0.5

 


 Consider distributing a file of F = 10 Gbits to N peers. The server has an upload rate of us = 20 Mbps, and each peer has a download rate of di = 1 Mbps and an upload rate of u. For N = 10, 100, and 1,000 and u = 1 Mbps, prepare a chart giving the minimum distribution time for each of the combinations of N for both client-server distribution and P2P distribution.                                       

Note: 200 Kbps = 200/1024 Mbps

 

10 Gbits = 10 * 1024 Mbits = 10240 Mbits

us = 20Mbps

dmin = di = 1Mbps

 

client-server

  • Dc-s = max {NF/us, F/dmin}. 
  • NF/u = N * (10240 Mbit / 20 Mbit) sec = N * 512 sec
  •  F/dmin = ( 10240 Mbit / 1 Mbit) sec  = 10240
N = 10 N = 100 N = 1000
10240 51200 512000

 

P2P

  • Dp2p = max {F/us, F/dmin,
    )}
  •  = N * ( 10240 Mbits / (20 Mbits + (N*u Mbps)) sec
N = 10 N = 100 N = 1000
10240 10240 10240

 

 

 

 

 



P2P file distribution : BitTorrent

파일을 256Kb의 청크단위로 분리

peer들은 이 청크들을 송신/수신

torrent : 청크 파일을 주고받는 peer 집단

tracker: torrent에 참여한 peer를 추적

 

P2P application인 BitTorrent에서 각 peer는

 다른 peer들에게 그들이 보유한 chunk list를 받아서

현재 자신이 보유하고 있지 않은 chunk 중

그 chunk를 보유한 이웃이 가장 적은 chunk부터 요청

  • 사용자는 tracker로부터 peer들의 리스트를 얻어서 현재 peer를 파악
  • 그들 중 일부와 연결을 맺은 peer들은 neighbors라고 부름
    • 처음 torrent에 들어온 사람들은 청크를 공급받기만 하지만, 
    • 축적되면 다른 peer에게 업로드함
    • 이후에는 교환할 peer를 바꿈

 churn : peer는 원할때마다 들어오고 나갈 수 있음(이기적), 남아서 다른 이들을 위해 업로드할 수 있음(이타적)



Requesting chucks

  • 어떤 청크를 요청할 것인가
  • 청크들의 제각기 다른 부분집한들을 여러 peer들이 가지고 있음
  • 각 peer에게 자신이 가진 chunk를 물어보고
  • 그 중 가장 희귀한 chuck부터 요청하여
  • 희귀한 것부터 빠르게 확산될 수 있도록 함

Sending chunks : tit-for-tat rule

  • 자신에게 가장 많이 공급하는 4명의 peer에게 보냄
    • 매 10초마다 4명을 선정
    • choke : 그 peer 외에는 보내지 않음
  • optimistically unchoke : 매 30초마다 보낼 peer들을 무작위로 선택
    • 이들이 상위 4명에 포함될 수도 있음
  • fair trading을 지향
    • 자신이 공급할 수 있는 양의 정도가 비슷한 사람끼리 교환할 수 있도록 지원함 - 이기적인 유저들을 걸러냄

 

 

BitTorrent : tit-for-tat

higher upload rate

find better trading partners,
get file faster

 

 

728x90
반응형

'CS > Network' 카테고리의 다른 글

Socket programming with UDP, TCP  (0) 2021.10.16
Video Streaming and CDNs (Content Distribution Networks)  (0) 2021.10.16
DNS  (0) 2021.10.15
Electronic Mail  (0) 2021.10.15
Caching  (0) 2021.10.15