혼자 정리
[네트워크이론] 2.5 P2P 파일 분배 본문
(Computer Networking a top-down Approach 책의 내용입니다)
- 항상 on인 서버가 필수 x
- 임의의 end system간의 통신
- 다른 피어에게 서비스를 요청하기도 하고, 다른 피어에게 대가로 서비스를 제공하기도 함
- self scalability : 새 피어의 추가는 서비스 capacity를 증가시키고 서비스 demands를 증가시킴
- 피어끼리 간헐적으로 연결되고 IP 주소도 바뀔 수 있음 -> 관리의 어려움
- examples :
- P2P file sharing (BitTorrent)
- Streaming (KanKan)
- VoIP (Skype)
Clinet-Server vs. P2P
- 가정
- 파일 크기 : $F$
- 서버의 업로드 속도 : $u_{s}$
- 클라이언트의 업로드 속도/다운로드 속도 : $u_{i}$, $d_{i}$
- 클라이언트-서버 구조에서 파일 하나를 $N$ 클라이언트 모두에게 배포하는데 걸리는 시간 $D_{C-S}$
- $d_{min} =$ min client download rate
- $$D_{C-S} \geq \max \left { NF/u_{s} , F/d_{min} \right } $$
- P2P 구조에서 파일 하나를 $N$ 클라이언트 모두에게 배포하는데 걸리는 시간 $D_{P2P}$
- $$ D_{P2P} \geq \max \left { F/u_{s} , F/d_{min} , NF / (u_{s} + \Sigma u_{i}) \right }$$
- $NF/(u_{s} + \Sigma u_{i})$ 에서 $N$이 커지면 $\Sigma u_{i}$ 도 커짐으로 어느정도 상쇄
BitTorrent
- 파일을 256Kb 청크로 분할
- torrent : 파일 청크를 교환하는 피어 그룹
- tracker : torrent에 참여하는 피어를 트래킹하는 노드
- 토렌트 안의 피어들이 청크를 수신/송신
- 갓 참여하게 되는 피어
- 당장은 청크를 갖고 있지 않지만 시간이 지남에 따라 다른 피어들로부터 받아서 축적하게 됨
- 트랙커에서 피어 목록을 받아서 일부에 연결하게 됨 ("neighbors")
- 각 피어는 다운로드와 동시에 다른 피어에게 청크를 업로드한다.
- 청크 요청 :
- 서로 다른 피어는 청크의 서로 다른 부분을 보유
- 하나의 피어는 주기적으로 다른 피어에게 그들이 가지고 있는 청크 목록을 요청
- 하나의 피어는 자신이 가지고 있지 않은 청크를 요청(가장 희소한 것부터)
- 청크 보내기 (Tit-for-tat) :
- 하나의 피어는 자신에게 가장 높은 속도로 보내주고 있는 피어 넷에게 청크를 보내준다.
- 나머지 피어에게는 보내지 않는다
- 매 10초마다 top4를 재평가
- 매 30초마다 나머지 피어 중 하나를 선택해서 청크를 보낸다
- "optimistically unchoke"
- 해당 피어가 top4 안에 들게 될 수도 있음
- ex)
- 1) A가 B를 "optimistically unchoke"
- 2) A가 B의 top4 providers가 됨 -> B가 보은
- 3) B가 A의 top4 providers가 됨
- 하나의 피어는 자신에게 가장 높은 속도로 보내주고 있는 피어 넷에게 청크를 보내준다.
'네트워크' 카테고리의 다른 글
[네트워크이론] 3.1 트랜스포트 계층 서비스 및 개요 (0) | 2024.01.04 |
---|---|
[네트워크이론] 2.6 비디오 스트리밍과 컨텐츠 분배 네트워크 (0) | 2024.01.02 |
[네트워크이론] 2.4 DNS (0) | 2023.12.30 |
[네트워크이론] 2.3 인터넷 전자메일 (0) | 2023.12.29 |
[네트워크이론] 2.2 웹과 HTTP (0) | 2023.12.29 |