Q 어떻게 유튜브같은 멀티미디어 서비스가 동작할까
멀티미디어 : audio
아날로그 신호를 디지털화 시키기 위해 샘플링을 함
비트레이트(bps)를 높이면 오리지널에 가까워짐
멀티미디어 : video
비디오 : 이미지의 연속
각 이미지를 프레임이라 부른다
한 프레임은 여러 픽셀로 되어있고, 픽셀은 RGB색 값을 가진다.
영상 비트레이트보다 샌더 전송속도가 빨라야 영상이 잘 재생된다
- 비디오란?
- 비디오는 일정한 비율로 연속적으로 표시되는 이미지의 시퀀스입니다.
- 예시로 1초에 24개의 이미지가 표시됩니다.
- 디지털 이미지
- 디지털 이미지는 픽셀의 배열로 구성됩니다.
- 각 픽셀은 비트로 표현됩니다.
- 코딩
- 코딩 과정에서 이미지 안(intra-frame)과 이미지 간(inter-frame)의 중복을 사용하여 이미지를 인코딩하는 데 필요한 비트 수를 줄입니다.
- 공간적 중복(Spatial Redundancy): 이미지 내 중복되는 정보를 줄이기 위한 방식. 예를 들어, 같은 색의 값을 반복해서 전송하지 않고, 색상 값과 반복되는 횟수만을 전송하는 방식입니다.
- 시간적 중복(Temporal Redundancy): 이미지 간 변화가 적을 경우, 새 프레임 전체를 전송하는 대신, 이전 프레임과의 차이만을 전송하여 효율을 높입니다.
- 예시
- 공간적 코딩(Spatial Coding): 같은 색의 N개의 값을 보내는 대신, 색상 값과 그 반복되는 횟수만 보냅니다.
- 시간적 코딩(Temporal Coding): 다음 프레임에서 완전한 이미지를 전송하지 않고, 이전 프레임에서 바뀐 부분만 전송합니다.
비트레이트
- CBR (Constant Bit Rate: 고정 비트레이트)
- 비디오 인코딩 속도가 고정되어 있는 방식입니다.
- 일정한 품질을 유지하는 대신, 영상의 복잡도와 상관없이 일정한 비율로 비트를 사용합니다.
- VBR (Variable Bit Rate: 가변 비트레이트)
- 비디오 인코딩 속도가 장면에 따라 달라지는 방식입니다.
- 공간적, 시간적 코딩의 양에 따라 비트레이트가 변화합니다. 즉, 더 복잡한 장면에서는 더 높은 비트레이트가 사용되고, 단순한 장면에서는 더 적은 비트가 사용됩니다.
- 예시 비트레이트
- MPEG 1 (CD-ROM): 1.5 Mbps
- MPEG2 (DVD): 3-6 Mbps
- MPEG4 (인터넷에서 자주 사용됨): 1 Mbps 미만
- 공간적 코딩 예시
- 같은 색(N값)을 반복해서 전송하는 대신, 색상 값과 그 반복 횟수만 전송하는 방식입니다.
- 시간적 코딩 예시
- 완전한 새로운 프레임을 전송하는 대신, 이전 프레임과 다른 부분만 전송합니다.
멀티미디어 네트워킹의 3가지 응용 유형
- 스트리밍 및 저장된 오디오/비디오 (streaming, stored audio, video)
- 스트리밍: 파일을 전부 다운로드하지 않고 재생을 바로 시작할 수 있습니다.
- 저장된 콘텐츠: 서버에서 빠르게 전송되어 클라이언트에서 저장되거나 버퍼링을 통해 재생할 수 있습니다.
- 예: YouTube, Netflix, Hulu와 같은 서비스.
- 대화형 음성/영상 통신 (conversational voice/video over IP)
- 인간 대 인간의 상호작용 특성으로 인해 지연 허용치가 낮습니다.
- 예: Skype와 같은 음성/영상 통화 서비스.
- 실시간 스트리밍 오디오/비디오 (streaming live audio, video)
- 실시간으로 진행되는 오디오/비디오를 스트리밍합니다.
- 예: 스포츠 경기 생중계와 같은 실시간 이벤트.
저장된 비디오 스트리밍(Streaming Stored Video)
- 비디오 녹화 (Video Recorded)
- 비디오는 30프레임/초와 같은 속도로 녹화됩니다. 이 단계에서 비디오는 서버에 저장됩니다.
- 비디오 전송 (Video Sent)
- 네트워크 지연(Network Delay)이 존재하는 상황에서, 서버는 비디오 데이터를 클라이언트로 전송합니다. 이 과정에서 지연이 발생할 수 있습니다. 그래프에서 빨간 선으로 표시된 부분이 서버에서 클라이언트로 전송되는 데이터를 나타냅니다.
- 비디오 수신 및 재생 (Video Received, Played Out)
- 클라이언트가 비디오를 받기 시작한 후, 클라이언트는 데이터를 재생합니다. 이때 스트리밍은 서버가 아직 나머지 데이터를 보내고 있는 동안 클라이언트에서 초기 부분을 재생할 수 있습니다. 이 부분이 스트리밍의 핵심입니다.
ㅡ> 클라이언트는 서버에서 모든 데이터를 받기 전에도 비디오 재생을 시작할 수 있다
그러나 현실에는 전송속도가 일정하지 않은, 네트워크 jitter가 생긴다.
그래서 다운받은걸 바로 재생하지 않고, playout delay동안 기다렸다가 재생
ㅡ> 이걸 버퍼링이라고 함
ㅡ> 스무스하게 재생되게 만듬
버퍼링과 재생
- 버퍼링 개념
- 비디오 서버에서 클라이언트로 데이터가 전송되며, 이는 클라이언트의 버퍼에 저장됩니다.
- 이 버퍼는 가변적인 전송 속도 x(t)x(t)로 채워지며, 클라이언트에서 일정한 재생 속도 rr로 재생됩니다.
- 평균 채움 속도( x‾\overline{x} )와 재생 속도( rr )의 관계
- x‾<r\overline{x} < r: 평균 채움 속도가 재생 속도보다 낮으면, 결국 버퍼가 비게 되어 비디오 재생이 멈추고 버퍼가 다시 채워질 때까지 기다려야 합니다.
- x‾>r\overline{x} > r: 평균 채움 속도가 재생 속도보다 높으면 버퍼가 충분히 채워져 재생이 중단되지 않으며, 전송 속도의 변동을 흡수할 수 있습니다.
- 초기 재생 지연의 트레이드오프
- 초기 재생 지연을 크게 설정할수록 버퍼 부족 현상이 줄어들어 원활한 재생이 가능하지만, 그만큼 사용자가 시청을 시작하기까지의 대기 시간이 길어집니다
- 초기 버퍼 채우기
- 재생이 시작되기 전, 버퍼가 먼저 일정량 채워질 때까지 기다립니다. 이 시점까지의 초기 버퍼 채우기는 클라이언트가 재생을 시작할 준비를 하는 과정입니다.
- 재생 시작 시간 tpt_p
- 특정 시점 tpt_p에 도달하면 클라이언트가 비디오 재생을 시작합니다. 이 시점 이후로 버퍼는 채워지는 속도와 재생 속도 사이에서 균형을 유지하며 데이터를 소비합니다.
- 버퍼 채움 수준의 변동
- 데이터 전송 속도 x(t)x(t)는 시간에 따라 변동이 있을 수 있지만, 재생 속도 rr는 일정합니다. 이러한 속도 차이로 인해 버퍼 내 데이터 양이 시간에 따라 변할 수 있습니다.
HTTP를 통한 멀티미디어 스트리밍
- HTTP GET을 통한 멀티미디어 파일 수신
- 멀티미디어 파일은 HTTP GET 요청을 통해 서버로부터 수신됩니다. 이는 웹에서 파일을 요청하고 수신하는 일반적인 방법입니다.
- TCP를 통한 최대 속도로 전송
- TCP 프로토콜은 안정적인 연결을 제공하며, 가능한 최대 전송 속도로 데이터를 보냅니다. TCP의 특성상 데이터의 손실이 발생하면 재전송을 통해 보완됩니다.
- 전송 속도의 변동
- 전송 속도 x(t)x(t)는 TCP의 혼잡 제어 및 재전송으로 인해 변동할 수 있습니다. TCP는 패킷 손실이 발생할 때마다 혼잡 제어 메커니즘에 따라 속도를 조절합니다.
- 재생 지연 증가
- TCP는 안정적인 전송을 보장하지만, 데이터가 순서대로 도착하도록 하기 위해 더 큰 재생 지연이 발생할 수 있습니다. 이러한 지연은 비디오 재생이 매끄럽게 유지되도록 합니다.
- 방화벽 통과 용이성
- HTTP/TCP는 일반적인 웹 트래픽과 같은 프로토콜이므로 방화벽을 더 쉽게 통과할 수 있습니다.
TCP를 쓰면 네트워크가 속도를 조절해서 비트레이트를 맞추기가 어렵고
UDP를 쓰면 네트워크 상황 안좋아도 막 쏟아부으니 끊긴다
유튜브같은건 어떻게 까?
ㅡ> DASH
DASH (Dynamic, Adaptive Streaming over HTTP)
ㅡ> 스트리밍 멀티미디어 방식중 하나
DASH는 네트워크 상태에 따라 스트리밍 품질을 동적으로 조정하는 방식입니다.
- 서버 측 작업
- 비디오 파일을 여러 청크(chunk)로 나누어 저장합니다.
- 각 청크는 다양한 비트레이트로 인코딩되어 저장됩니다.
- 매니페스트 파일은 각 청크의 URL을 포함하며, 클라이언트가 청크를 요청할 때 참조할 수 있도록 합니다.
- 클라이언트 측 작업
- 클라이언트는 주기적으로 서버와 클라이언트 간의 대역폭을 측정합니다.
- 매니페스트 파일을 참조하여 한 번에 하나의 청크를 요청합니다.
- 현재 대역폭에 맞는 최대 비트레이트로 인코딩된 청크를 선택합니다.
- 대역폭 상황에 따라 서로 다른 비트레이트의 청크를 요청하여 비디오 품질을 조절할 수 있습니다.
따라서, 네트워크 상태에 따라 동영상 품질이 자동으로 바뀐다
유튜브
ㅡ> 많은 양의 같은데이터가 나가려고 해서 네트워크 혼잡
ㅡ> multicast : 같은 데이터는 하나만 나가서 여러군데로 복사되도록 (현재 구현x)
ㅡ> CDN : 데이터 복사본을 전세계 여러군데 둬서, 사용자가 가까운곳에서 데이터를 받도록 함
본사 매니패스트 파일만 주고 cnd이 데이터를
사용자한테 hop이 제일 가까운곳에 위치시키기위해 Access Network근처에 CDN 위치시킴
Netflix 스트리밍 과정
- Netflix 계정 관리
- 사용자가 Netflix 계정에 로그인하거나 계정을 관리하는 단계입니다. 이 과정은 Netflix의 등록 및 계정 서버에서 처리됩니다.
- 비디오 탐색
- 사용자는 Netflix에서 보고 싶은 비디오를 탐색합니다. 이 단계에서 사용자는 원하는 비디오를 선택합니다.
- 매니페스트 파일 전송
- 사용자가 비디오를 선택하면, 해당 비디오의 매니페스트 파일이 클라이언트(사용자의 기기)로 전송됩니다. 매니페스트 파일은 다양한 비트레이트와 해상도로 인코딩된 비디오 청크의 URL을 포함하고 있습니다.
- DASH 스트리밍
- 매니페스트 파일을 바탕으로, 클라이언트는 사용 가능한 대역폭에 맞는 비디오 청크를 CDN에서 요청합니다. 이 과정은 DASH를 통해 이루어지며, 클라이언트는 Amazon 클라우드에 저장된 비디오 복사본을 여러 CDN(Akamai, Limelight, Level-3 등)에 분산하여 빠르게 전송받습니다.
'CS > 네트워크' 카테고리의 다른 글
네트워크 보안2 (0) | 2024.10.30 |
---|---|
네트워크 보안 (1) | 2024.10.28 |
무선이동 네트워크3 (0) | 2024.10.24 |
무선이동 네트워크2 (1) | 2024.10.23 |
무선이동 네트워크1 - WI-FI, CDMA/CA, RTS/CTS (0) | 2024.10.22 |