Computer Science/네트워크

[네트워크] Peer-to-peer (P2P) Architecture

바보1 2023. 4. 14. 13:49

앞의 글을 읽으시면 이해에 도움이 됩니다.

 

2023.04.08 - [Computer Science/네트워크] - [네트워크] Application-Layer Protocols

 

[네트워크] Application-Layer Protocols

앞의 글을 읽으시면 이해에 도움이 됩니다. 2023.04.08 - [Computer Science/네트워크] - [네트워크] Transport Protocol(TCP, UDP) Services [네트워크] Transport Protocol(TCP, UDP) Services 앞의 글을 읽으시면 이해에 도움

hi-guten-tag.tistory.com


1. Peer-to-peer (P2P)란?

 

 

  • Peer-to-pper (P2P)는 서버의 의존성을 최소화한 구조입니다.
  • 대신 주기적으로 연결되는 호스트들 쌍인 peer로 서로 직접적으로 소통합니다.
  • P2P는 하나의 큰 파일을 single server에서 large number of host(called peers)로 분산된 어플리케이션입니다.
  • 클라이언트-서버에서는 서버가 파일의 복사본을 각 피어에게 보냄으로써 서버에게 막대한 부하를 일으키고, 많은 양의 서버 자원을 소비합니다.
  • 반대로 P2P에서는 각 피어가 다른 피어에게 받은 파일의 일부분을 재분포함으로써 서버의 분포 과정을 도와줍니다.

2. BitTorrent

 

 

  • BitTorrent는 파일 분산을 위한 가장 일반적인 Protocol입니다.
  • BItTorrent에서 특정 파일의 분포에 참여하는 모든 피어들을 torrent라고 합니다.
  • 토렌트에 있는 피어들은 다른 피어에게 있는 파일에서 chunk라 불리는 동일한 사이즈를 다운로드합니다.
  • BitTorrent에서 피어가 토렌트에 처음 참여할 때에는 청크가 없습니다.
  • 시간이 지남에 따라 더 많은 청크를 쌓게 됩니다. 청크를 다운로드하는 동안 다른 피어에게도 청크를 업로드합니다.
  • 피어가 전체 파일을 모은 후에는 토렌트에서 나올 수 있으며, 또는 토렌트에 남아 다른 피어에게 청크를 계속 업로드할 수도 있습니다. 또한, 어떤 피어도 언제든지 일부 청크만 가지고 토렌트에서 나갈 수 있으며, 나중에 다시 토렌트에 참여할 수 있습니다.
  • 이때 churn은 피어의 합류와 이탈에 따른 불안정성을 말합니다. 이는 곧 전체 토렌트의 성능과 안정성에 영향을 미칩니다. 따라서 토렌트를 설계할 때 churn을 고려하여 시스템을 설계해야 합니다.

3. 작동 방식

 

 

출처 : Computer Networking 2장. Figure 2.24

  • Tracker는 서버와 비슷하지만 다릅니다. 트래커는 누가 무엇을 가졌는지만 알고 있고, 해당 정보를 피어에게 줍니다.
  • 이때 트래커는 랜덤으로 피어들의 일부를 추출하여 해당 IP 주소를 앨리스에게 전송합니다.
  • 피어의 리스트를 전송한 후에, 앨리스는 각 피어들과 TCP connection을 연결합니다.
  • 각각의 피어는 아마 파일의 일부 청크만을 가지고 있으며, 서로 다른 피어는 서로 다른 청크를 가지고 있습니다.
  • 주기적으로, 앨리스는 TCP 연결을 통해 인접한 피어에게 그들이 가진 청크 목록을 요청합니다.
  • 앨리스가 L개의 이웃을 가지고 있다면, L개의 청크 목록을 얻게 됩니다.
  • 정보를 바탕으로 앨리스는 현재 가지고 있지 않은 청크에 대한 요청을 TCP 연결 통해 보냅니다.
  • 어떤 시점에서든, 앨리스는 일부 청크를 가지고 있으며, 그녀의 이웃이 어떤 청크를 가지고 있는지 알고 있습니다.
  • 정보를 바탕으로 앨리스는 가지 중요한 결정을 내려야 합니다.
    • 첫째, 그녀는 이웃으로부터 먼저 어떤 청크를 요청해야 할까요?
    • 둘째, 그녀는 어떤 이웃에게 요청한 청크를 보내야 할까요

 

  • 어떤 청크를 요청할지 결정할 , 앨리스는 가장 적은 복사본을 가진 청크 찾아서 먼저 요청하는 기술인 rarest first 사용합니다. 방법을 통해, 가장 적은 복사본을 가진 청크가 빠르게 재분배되며, 토런트 청크의 복사본 수를 균등하게 유지하는 것을 목표로 합니다.
  • BitTorrent clever trading algorithm 사용하여 어떤 요청에 응답할지 결정합니다.
  • 기본 아이디어는 현재 가장 높은 비율로 데이터를 제공하는 이웃에게 우선순위를 부여하는 것입니다.
  • 예를 들어 앨리스는 이웃마다 지속적으로 비트를 받는 속도를 측정하고, 현재 가장 높은 비율로 비트를 공급하는 4명의 피어를 결정합니다.
  • 그리고 이 4명의 피어에게 청크를 보내어 상호작용합니다.
  • 10초마다 앨리스는 비율을 재계산하고 4명의 이웃 일부를 변경할 있습니다.
  • BitTorrent 용어로, 4명의 이웃은 unchoked라고 합니다.  중요한 점은, 30초마다 앨리스는 무작위로 하나의 추가적인 이웃을 선택하고 청크를 보내줍니다. 이를 무작위로 선택된 이웃인 철수라고 해봅시다.
  • BitTorrent 용어로, 철수 optimistically unchoked라고 합니다.
  • 아무튼 BitTorrent는 자원 공유와 균등 공유를 유도하는 tit-for-tat이 없었다면, 현재까지 존재하지 않았을 수도 있습니다.

참고

 

 

경북대학교 컴퓨터학부 COMP0414-001 컴퓨터 망 수업

Computer Networking: A Top Down Approach / James F. Kurose, Keith W. Ross 저 / PEARSON / 2021년

Chat GPT, Bing AI


P2P는 간단하게 끝나네요

다음 글에서는 Video Streaming에 대해 알아보겠습니다.

 

2023.04.14 - [Computer Science/네트워크] - [네트워크] Video Streaming

 

[네트워크] Video Streaming

앞의 글을 읽으시면 이해에 도움이 됩니다. 2023.04.08 - [Computer Science/네트워크] - [네트워크] Application-Layer Protocols [네트워크] Application-Layer Protocols 앞의 글을 읽으시면 이해에 도움이 됩니다. 2023.04

hi-guten-tag.tistory.com

감사합니다.

지적 환영합니다.