파일 배포 시간: Client-Server model
- 서버 전송: 서버는 N개의 파일 복사본을 순차적으로 전송해야 한다.
- 한 복사본을 전송하는 시간: $ \frac{F}{u_{s}}$
- N개의 복사본을 전송하는 시간: $\frac{N F}{u_{s}}$
- 클라이언트: 각 클라이언트는 파일 복사본을 다운로드해야 한다.
- $d_{min}$ = 가장 느린 클라이언트의 다운로드 속도
- 가장 느린 클라이언트의 다운로드 시간 : $\frac{F}{d_{min}}$
- 클라이언트 서버 방식을 사용하여 N개의 클라이언트에게 F파일을 배포하는 시간
- ${D_{c-s}}\geq max({\frac{N F}{u_{s}}, \frac{F}{d_{min}}})$
- 서버의 총 업로드 시간, 가장 느린 클라이언트가 파일을 다운로드하는 데 걸리는 시간 중 더 큰 것
- 이 두 과정은 순차적으로 일어나는 것이 아니라 병렬적으로 일어날 수 있기 때문에 max함수를 사용한다.
CS구조에서 서버는 모든 클라이언트들에게 파일을 개별적으로 전송하기 때문에, 클라이언트 수가 많아질수록 서버의 부담이 커진다.
파일 배포 시간 : P2P
P2P 구조에서는 파일배포가 단순히 서버와 클라이언트 간의 전송으로만 이루어지지 않고, 클라이언트들 간에도 파일을 서로 주고받는 방식으로 이루어진다.
P2P구조에서 파일 분배에 소요되는 시간은
max( 서버가 한 개의 파일 복사본을 전송하는 시간, 가장 느린 클라이언트가 파일을 다운로드하는 시간, 클라이언트들이 전체 파일을 다운로드하는 시간)
클라이언트들 간의 집합적 다운로드 시간은 NF / (서버의 업로드 속도+ 모든 클라이언트들의 업로드 속도 합)
P2P 네트워크에서는 클라이언트들끼리 서로 파일을 주고 받기 때문에, 전체 파일 배포 시간이 서버의 업로드 시간과 가장 느린 클라이언트의 다운로드 시간 뿐 아니라, 클라이언트들 간의 파일 전송 시간에 의해서도 결정된다.
클라이언트 서버 구조에서는 클라이언트 수(N)이 증가할수록 배포시간이 선형적으로 증가한다. 이와 달리 P2P구조에서는 N이 늘어나도 파일 분배 시간이 매우 완만하게 증가한다. 서버가 하나의 파일 복사본만 업로드하면 클라이언트들끼리 파일을 주고 받으며 전체 파일을 분산시키기 때문이다. 따라서 클라이언트 수가 많을 때는 P2P 구조가 더 효율적임을 알 수 있다.
Torrent: 한 파일에 대한 chunk를 소유하고 공유하는 peer들의 그룹, 집합
Tracker: 파일의 chunk를 소유한 peer들의 정보를 가진 서버이다. 파일의 정보는 x, 토렌트의 위치 정보만
peer들은 자신의 정보를 tracker에 등록한 뒤, 파일정보 공유가 가능한 peer들의 목록 중 일부를 tracker로부터 얻는다.
churn : 휘젓다. peer들간의 영향을 줄 수 있음
peer가 전체 파일 정보를 얻게 되면, torrent를 떠날 수도 있고 남을 수도 있다.
peer들은 주기적으로 peer 목록에 있는 peer들에게 그들이 소유한 chuck리스트를 보내달라고 요청한다.
tit-for-tat은 반복 게임 상황에서 협력을 유지하는 상호작용 전략이라고 한다. 협력 상태로 시작하여 상대가 협력하면 자신도 협력하고, 상대가 배반하면 자신도 배반하여 상대가 더 이상 이득을 취하지 못하게 하는 방식이라고 하는데, BitTorrent에서 청크를 보내는 방식으로서 tit-for-tat이 나왔다.
peer들은 청크를 공유할 때 자신에게 가장 높은 비율로 chunk를 보내고 있는 4개의 peer들에게 자신의 청크를 보낸다. 이 외의 다른 peer들은 chunk를 받지 못한다. 10초마다 높은 비율로 chunk를 보내는 4개의 peer들을 재평가한다. torrent에 참여한지 얼마 되지 않은 신생 peer들을 위해 30초마다 랜덤하게 peer를 골라 chunk를 공유한다. 이 신생 peer에게는 optimistically unchokes한다고 말한다.
많이 참고한 블로그
https://velog.io/@wjs4199/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-P2P-BitTorrent
'컴퓨터네트워크' 카테고리의 다른 글
[컴퓨터 네트워크] Wireless : Intro, CDMA (0) | 2024.07.11 |
---|---|
[컴퓨터 네트워크] Link layer - Multiple Access Protocol (0) | 2024.07.10 |
[컴퓨터 네트워크] Link layer - Introduction, Error Detection & Correction (0) | 2024.07.09 |
[컴퓨터 네트워크] 2일차 수업 (Introduction/Application Layer) (0) | 2024.07.03 |
[컴퓨터 네트워크] 1일차 (3) | 2024.06.30 |