앞의 글을 읽으시면 이해에 도움이 됩니다.
2023.04.08 - [Computer Science/네트워크] - [네트워크] Application-Layer Protocols
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. 작동 방식
- 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
감사합니다.
지적 환영합니다.
'Computer Science > 네트워크' 카테고리의 다른 글
[네트워크] DASH, CDN (0) | 2023.04.14 |
---|---|
[네트워크] Video Streaming (0) | 2023.04.14 |
[네트워크] DNS - local DNS server (0) | 2023.04.14 |
[네트워크] DNS - Distributed, Hierarchical architecture (0) | 2023.04.14 |
[네트워크] DNS (0) | 2023.04.14 |