혼자 정리

[네트워크이론] 2.5 P2P 파일 분배 본문

네트워크

[네트워크이론] 2.5 P2P 파일 분배

tbonelee 2024. 1. 1. 23:27

(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가 됨