[CS/ Network] 컴퓨터 네트워킹 하향식 접근 8판 2장 애플리케이션 계층 / 2.5 P2P 파일 분배

yujeongkwon·2023년 7월 28일
0

CS / Network

목록 보기
8/27

목차
2.5 P2P 파일 분배 125

👩‍👩‍👧‍👧2.5 P2P 파일 분배

p2p

  • 항상 켜져 있는 인프라스트럭처 서버에 최소한으로(혹은 전혀 안 함)의존
  • 간헐적으로 연결되는 호스트 쌍들(피어) 서로 직접 통신
  • 피어는 서비스 제공자가 소유x -> 사용자가 제어하는 데스크톱과 랩톱,스마트폰이 소유
  • 브람 코헨(Bram Cohen)이 개발
  • 커다란 파일을 한 서버에서 다수의 호스트(피어)로 분배하는 P2P 애플리케이션 가정
    • ㄴ 리눅스 운영체제의 새로운 버전, 기존 운영체제,애플리케이션을 위한 소프트웨어 패치(patch), MP3 음악파일, MPEG 비디오 파일
  • 각 피어는 수신한 파일의 임의의 부분을 다른 피어들에게 재분배 -> 서버의 분배 프로세스를 도움.
    • <-> 클라이언트-서버의 파일 분배 : 서버는 파일 복사본을 각 피어들에게 보내야 함.
      = 서버에게 커다란 부하를 주고 많은 양의 서버 대역폭을 소비
  • p2p 구조의 자가 확장성

🎊 P2P 구조의 확장성

: F 사이즈의 파일을 한 서버로 부터 N개의 peer들이 파일의 복사본을 얻는 데 걸리는 시간(분배 시간)

  • client-server VS P2P

가정

  • us : 서버의 파일을 네트워크로 업로드하는 속도
  • ui : i번째 피어의 네트워크로 업로드하는 속도
  • di : i번째 피어의 네트워크로 다운로드하는 속도
    • -> 전송속도가 더 낮은 쪽(bottleneck이 걸리는 쪽)이 파일을 다운받는 전송 속도를 결정
  • F : 파일크기
  • N : 파일의 복사본을 얻는 피어 수

client-server

  • 서버의 파일 업로드 시간
    • N개의 파일 복사본들을 N개의 피어 각각에게 전송 = NF bit
    • 한 복사본당 서버에서 네트워크로 업로드 하는데 걸리는 시간 : F/us
    • N 개의 복사본들을 보내기 위해 N번 업로드 하는데 걸리는 시간(파일 분배 시간) : NF/us
  • 클라이언트의 파일 다운로드 시간
    • 다운로드 속도가 가장 느린 곳이 전체 속도를 결정
    • 최소 분배 시간 : F/dmin
  • 전체시간 : max(파일 업로드 시간(NF/us), 파일 다운로드 시간(F/dmin))
    • 클라이언트의 수 N에 따라 선형적으로 속도 증가

P2P

  • 서버의 파일 업로드 시간
    • 분배 처음에는 서버에만 파일이 존재 = 네트워크 상에는 파일이 없다.
    • 파일이 피어 커뮤니티에 도달할 수 있도록, 적어도 한번은 서버에서 업로드를 해야 한다.
    • ㄴ= 네트워크로 파일의 각 비트 보내기 = F/us
    • 서버가 한번 보낸 비트는 서버가 다시 보낼 필요 없다.
      - 피어들끼리 파일(비트)을 재분배하기 때문
  • 클라이언트의 파일 다운로드 시간
    • 모든 클라이언트들이 다운받아야 하므로 가장 다운속도가 느린곳에 의해 결정
    • 최소 분배 시간 : F/dmin
  • 시스템의 전체 파일의 업로드 용량
    • 한번 파일을 다운로드 한 후로는 클라이언트가 서버 역할 가능
    • 한 파일 전체 다운로드할 필요 x -> 어느 정도(chunk) 다운로드 하면 전달 가능
    • 전체 업로드 속도 = 원래 서버의 업로드 속도 + 각 피어의 업로드 속도
    • N개의 피어 모두 파일을 다운받아야 하므로 총 필요한 비트 수는 NF 비트
    • = NF/(전체 업로드 속도 = 서버 업로드 속도 + 각 피어의 업로드 속도)
  • 전체 시간 : max(서버의 파일 업로드 시간, 클라이언트의 파일 다운로드 시간, 시스템 전체 파일의 업로드 시간)
    • 클라이언트의 수 N이 커짐 = 업로드 해주는 클라이언트도 커짐 -> 선형시간증가x 낮은 속도로 증가한다. -> 자가확장성
    • 클라이언트가 많을수록 효율적
    • 안정성 문제 : client-server에서 서버는 24시간 열려 있지만, P2P의 경우 파일을 제공하는 피어들이 꺼져 있으면 파일을 다운받지 못한다.

BitTorrent

  • 파일 분배를 위한 인기 있는 P2P 프로토콜
  • 토렌트(torrent) : 파일을 주고받는 peer의 모임
    • 토렌트에 참여한 peer들 끼리 같은 크기의 chunk들을 주고받는다.
  • 파일이 256kb의 청크로 나누어 진다.(일반적인 크기)
  • 기본 동작 : 피어가 처음 토렌트 가입 -> 해당 피어는 청크가 없음 -> 시간이 지남에 따라 청크를 쌓음 -> 청크 다운로드 + 다른 피어들에게 청크 업로드 -> 토렌트 떠나기 -> 재가입 가능
  • 한 피어가 전체(일부) 파일을 얻었을 때 행동
    1. 이기적 : 파일 받기만하고 토렌트 떠나기
    2. 이타적 : 토렌트에 남아서 다른 피어들로 청크 업로드
    그림2«24 비트토렌트의 파일 분배

비트 토렌트 동작 과정

  • 트래커(tracker) : 인프라스트럭처 노드
    • 일종의 서버 역할
    • 한 피어가 토렌트에 가입할 때 트래커에 자신을 등록하고 주기적으로 자신이 아직 토렌트에 있음을 알린다.
    • 토렌트에 참여(=파일분배)하는 피어들을 트래킹(추적) 한다.

동작 과정

  1. newPeer : 토렌트에 가입
  2. 트래커 : 참여하고 있는 피어 집합에서 임의로 피어들의 부분집합(50개)을 선택 후, newPeer에게 이 50개 피어들의 IP 주소 전달
  3. newPeer : 해당 목록에 있는 모든 피어와 동시에 TCP 연결을 설정
    • 이웃 피어 : newPeer가 성공적으로 TCP 연결을 설정한 모든 피어
  4. 피어의 이웃 피어들은 시간에 따라 변동됨.
  5. 각 피어는 서로 다른 파일 청크들의 일부를 가짐.
  6. 주기적으로 newPeer는 현재 갖고 있지 않은 청크에 대해 (TCP 연결을 통해) 이웃 피어들 각각에게 그들이 갖고 있는 청크 목록 요구
    • 만약 newPeer가 N개의 이웃을 갖고 있다면, N개의 청크 목록을 얻음
    • 청크 요청 방식 : rarest first -> 희귀한 chunk 부터 먼저 요청
      • 가지고 있는 peer가 적은 chunk 먼저 요청 = peer들은 떠날수도 있으니까
      • -> 토렌트에 각 청크의 복사본 수가 (대략적으로) 동일
    • 청크 응답(전송) 방식 : 현명한 교역(trading) 알고리즘
      • 가장 빠른 속도로 newPeer에게 데이터를 제공하는 이웃에게 우선순위를 주는 것
      • newPeer 또한 요청 받으면 보내줘야 함.
      • 상위 우선순위를 가진 4개의 peer에게 청크를 보냄으로써 보답
      • 10초마다 속도 우선순위 속도 재계산한 후, 집합 수정
      • 활성화(unchoked) : 위 집합에 속한 4개의 peer
      • 낙관적 활성화(optimistically unchoked): 30초마다 임의로 피어 하나(새로운 교역 파트너 peerB)를 추가로 선택하여 peerB에게 청크를 보내는데, 이때 해당된 peerB
        • peerB의 입장에서 newPeer는 우선순위집합에 해당될 수 있음
      • 비활성화(choked) :위 5개 피어(4개의 '상위’ 피어와 하나의 탐색(probing) 피어) 외의 어떠한 청크도 받지 않는 모든 이웃 피어

  • TFT(tit-for-tat) : 기술한 교역을 위한 보상 방식
    • 위에서 말한 현명한 교역 알고리즘을 말하는 듯
    • 이 보상 방식은 회피할 수 있지만 있어야 되는 듯 ^^
    • 비트토렌트 생태계는 매우 성공적이며,수십만 개의 토렌트에서 동시에 수백만의 피어들이 능동적으로 파일을 공유하고 있다.
    • 비트토렌트가 TFT(혹은 그 변형) 없이 설계되었다면,대부분의 사용자들은 ‘무임승차칙free-rider)’이기 때문에 비트토렌트는 지금 존재하지도 않았을 것.
  • 비트토렌트는 여기서는 논의하지 않은 조각(pieces,미니청크), I파이프라이닝(pipelining),무작위 우선 선택(rand아n first selection), 마지막 게임 모드(endgame mode), 안티스너빙(anti-snubbing) 등 기법을 가짐.
  • +) DHT(Distributed Hast Table)
    • P2P의 다른 애플리케이션
    • 데이터베이스 레코드가 P2P 시스템 피어에 분산되어 있는 단순한 데이터베이스
    • 이는 다양하게 구현되어 있으며(예: 비트토렌트) 광범위한 연구 대상
profile
인생 살자.

0개의 댓글

관련 채용 정보