일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- centos도커설치
- springboot_exception_handler
- vm도커설치하는법
- 출처 코딩셰프
- 출처 따배도
- 스프링사진업로드
- 스프링부트api
- 스프링부트사진올리기
- 출처 노마드코더
- ssh도커설치
- 스프링부트팔로잉
- 우분투도커설치
- 인스타클론
- 멀티폼
- 파이썬sort
- dockerinstall
- 스프링부트서버에사진전송
- 스프링부트중복예외처리
- 출처 메타코딩
- WAS웹서버
- 스프링부트구독취소
- 스프링사진
- 출처 문어박사
- 스프링구독
- 스프링부트팔로우취소
- 서버에도커설치
- 도커설치하는법
- 스프링이미지업로드
- 스프링익셉션처리
- 스프링부트
- Today
- Total
MakerHyeon
[네트웍개론] Application Layer-P2P applications 본문
파일분산을 client-server일때와 P2P에서 비교해보자.
client-server일때,하나의 서버가 N명의 peers에게 파일(사이즈 F)를 분배하는데 걸리는 시간을 알아보자.
server는 transmission을할때, N개의 파일 사본을 순차적으로 전송(upload)한다.
하나의 카피를 보내는데 걸리는 시간은 F/u이다.
N개의 카피를 보내는데 걸리는 시간은 NF/u이다.
client: 각 클라이언트들은 파일 사본을 download해야한다.
d_min = min client download rate이라할때,
min client download time=F/d_min (파일사이즈/client다운로드rate)
따라서 client-server 접근에서는 파일분산에 N개카피를보내는데 걸리는시간(NF/U)과 다운받는데 걸리는 시간(F/d_min)중 max값 이상의 시간이 걸린다.
P2P구조에선, 서버는 최소한 하나의 파일을 업로드해야한다.
하나의 카피를 보내는데 걸리는시간=F/u
client가 다운로드하는게 걸리는 시간은
min client download time= F/
여러명의 클라이언트가 다운로드하는데 걸리는 시간을 측정할때
최대 업로드 속도는 (u_s+각클라이언트다운시간의합)이다.
이를 비교해볼때 p2p의 file distribution time이 더짧음을 알 수 있다.
비트토렌트는 P2P 파일 전송 프로토콜로, peer-to-peer로 연결하여 대용량 파일을 빠른속도로 공유하기위해 만들어진 프로토콜이다.
Torrent는 파일들을 교환하는 peers그룹을 말한다.
tracker는 torrent에 참여하는 동료들을 추적한다.
위의 예시에서는 엘리스가 tracker에서 peer목록을가져와,
torrent에서 peer들과 파일 chunk를 교환한다.
peer가 전체파일을 다운로드하면,떠나거나 torrent에 남을 수있다.
앨리스는 peer에게 보유한 chunk의 목록을 요청한다.
또한,누락된 chunk를 요청한다.
앨리스는 10초마다 평가를내려, 자신의 chunk를 가장높은 속도로 보내는 peer들에게 chunk를 보낸다.
30초마다 무작위로 다른 peer를선택해 chunk를 전송한다.
예시로, 앨리스는 밥의 상위 4개 provider중 하나가 된다.
밥은 이에 응답하고,밥은 앨리스의 상위 4개 provider중 하나가 된다.
이러한식으로 교환에 알맞은 파트너를 찾아 파일을 빨리다운로드받을 수 있어,높은 전송률을 가진다.
stream video traffic은 인터넷 대역폭의 주요 소비자이다.
netflix등이 이에 해당하며,가정용 ISP 트래픽의 80%를 차지한다.
엄청난 양의 사용자를 처리해야하며,사용자마다의 혼경이 다르기때문에(heterogeneity) 이를 극복하는 것이 관건이다.
이를 위해 분산된 application-level 인프라를 사용한다.
비디오에선 파일을 전송할때 때 색상,반복값수(N)만을 보내던지
이전프레임만의 차이점만 보냄으로써 중복전송을 최대한 줄인다.
또한 이미지 품질을 지키고,저장 공간을 절약하기 위해 일정 bit rate의 CBR을 사용할 수있다.
가변 bit rate의 VBR은 비디오 인코딩 속도가 변경되는것을 말한다.
server-client의 대역폭은 네트워크 congestion level(집,network core,access network,video server)에 따라 달라진다.
congestion은 packet loss,delay를 불러오고,이런경우 재생이 지연되거나 품질이 저하된다.
Dash는 Dynamic,Adaptive,Streaming over Http의 약자이다.
서버는 비디오를 여러 chunk로 분할한다.
각 chunk는 서로다른 속도로 encoding한다.
client는 주기적으로 server-client간 대역폭을 측정하고,한번에 한 chunk의 요청을 보낸다.
이때 코딩속도를 상황에 따라 선택가능하다.
client는 chunk요청시기와 위치,encoding속도등을 결정할 수 있다.한 예로 충분한 분량의 buffering video를 가지고 있고 측정된 수신 대역폭이 크다면 높은 품질의 video packet를 요청하고,적은 분량의 buffering video를 가지고 있고 측정된 수신 대역폭이 작다면 낮은 품질의 video packet 을 요청한다.
콘텐츠를 수십만 명의 동시 사용자에게 스트리밍하기 위해선 어떻게 해야할까?
첫번째로,이를 위해 대형 메가 서버를 둘 수 있다.
하지만 이는 한번 사고가 나면 끝나고,네트워크가 정체되며 확장가능하지않다.
또한 멀리 떨어져있는 고객은 낮은 품질 등의 불편을 겪는다.
두번째 방법은 분산 된 여러 사이트에 여러 개의 비디오 사본을 저장할 수 있다.
예를들어 CDN은 콘텐츠의 사본을 CDN노드에 저장해둔다.이후 가입자가 CDN에서 콘텐츠를 요청시 근처 사본으로 이동후 해당 콘텐츠를 검색한다. 네트워크의 경로가 혼잡할 경우엔 다른 복사본을 선택한다.
'Server > Network' 카테고리의 다른 글
[네트웍개론] Transport Layer (0) | 2023.05.03 |
---|---|
[네트웍개론] Application Layer-Socket programming (0) | 2023.04.17 |
[네트웍개론] Application Layer-DNS(The Domain Name System) (0) | 2023.04.17 |
[네트웍개론] Application Layer-E-mail,SMTP,IMAP (0) | 2023.04.17 |
[네트웍개론] Application Layer-Web and HTTP (0) | 2023.04.17 |