거대 데이터 센터 구축 및 직접 전송
- 인터넷 비디오 회사에서 스트리밍 서비스를 제공하는 가장 단순한 방법
- 인터넷 비디오 회사들은 엄청난 스트리밍 트래픽을
전 세계에 걸친 지점에 끊김 없이 안정적으로 제공하는 일을 한다.- 이러한 일들은 매우 어려운 문제임
과정
- 단일한 거대 데이터 센터를 구축하여 모든 자료를 센터에 저장
- 전 세계의 사용자에게 비디오 스트림을 데이터 센터로부터 직접 전송
문제점
- 클라이언트가 데이터 센터로부터 멀리 있는 경우
- 서버로부터 클라이언트로의 패킷 경로는 많은 통신 링크와 ISP를 거쳐감
- 거쳐가는 많은 통신 링크 중 하나라도 비디오 소비율보다 낮은 전송용량인 경우
→ 종단 간에 처리율이 낮아지고, 결국 사용자는 화면 정지 현상을 겪음
- 종단 간의 길이가 길어질수록 이런 현상은 증가
- 종단 간의 길이가 길어질수록 이런 현상은 증가
- 인기 있는 비디오는 같은 통신 링크를 통해 반복적으로 전송될 것이라는 점
- 네트워크 대역폭의 낭비를 초래
- 회선을 제공하는 ISP들에게 동일한 바이트를 전송
→ 중복 비용을 지불하는 결과를 초래
- 단일한 데이터 센터를 구축하면, 한 번의 장애로 전체 서비스가 중단될 수 있는 위험
- 데이터 서버와 관련된 장애가 발생하면 어떠한 비디오 스트리밍 서비스도 불가능
- 데이터 서버와 관련된 장애가 발생하면 어떠한 비디오 스트리밍 서비스도 불가능
- 이러한 문제점을 해결하기 위해 대부분의 스트리밍 회사들은 콘텐츠 분배 네트워크를 사용
콘텐츠 분배 네트워크의 개념
콘텐츠 분배 네트워크(Content Distribution network, CDN)
- 다수의 지점에 분산된 서버들을 운영
→ 비디오 혹은 다른 콘텐츠 데이터의 복사본을 분산 서버에 저장 - 사용자는 최선의 서비스와 사용자 경험을 제공할 수 있는 CDN 서버 지점으로 연결
- CDN 서버는 사설 CDN 혹은 제삼자가 운영하는 CDN일수도 있음
- 다수의 지점에 분산된 서버들을 운영
CDN의 서버 위치에 대한 2가지 철학(CDN 구축 방식)
- CDN은 일반적으로 서버 위치에 대해 다음 2가지 철학 중 하나를 채용하고 있다.
Enter Deep
- ISP의 접속 네트워크로 깊숙이 들어가는 것
→ 서버 클러스터를 세계 곳곳의 접속 네트워크를 구축서버 클러스터
: kr, uk, fr, ca, jp 같은 모든 국가의 상위 레벨 도메인에 대한 TLD 서버
- 수천 개의 지점에 서버 클러스터를 구축함으로써 해당 방식을 구현
- Akamai에 의해 주창된 것
- 이 방식의 목적 : 서버를 최대한 사용자 가까이에 위치
→ 사용자와 CDN 서버 사이의 링크 및 라우터 수를 줄이고, 지연 시간 및 처리율을 개선 - 문제점 : 고도로 분산된 설계로 인해 서버 클러스터 유지 관리 비용이 커짐
Bring Home
- 좀 더 적은 수의 핵심 지점에 큰 규모의 서버 클러스터를 구축
→ ISP를 Home으로 가져오는 개념 - 접속 ISP에 연결하는 대신, 클러스터는 인터넷 교환 지점(IXP)에 배치된다.
- 장점 : Enter Deep 방식에 비해 클러스터 유지 및 관리 비용이 줄어듦
- 단점 : 사용자가 느끼는 지연 시간과 처리율은 상대적으로 나빠짐
CDN은 비디오 콘텐츠의 복사본 저장
- 서버 클러스터의 위치가 정해지면, CDN은 콘텐츠의 복사본을 클러스터에 저장한다.
- CDN은 각 클러스터마다 모든 비디오의 복사본을 전부 유지할 필요가 없다.
← 비디오별로 인기 있는 국가가 다르기 때문에 해당 비디오의 수요가 적을 수 있음
- CDN은 각 클러스터마다 모든 비디오의 복사본을 전부 유지할 필요가 없다.
CDN의 Pull 방식 사용
- CDN은 클러스터에 대해 Push 방식이 아닌 Pull 방식을 사용한다.
- 클러스터의 저장공간이 가득 차면 자주 사요 되지 않은 비디오 데이터는 삭제됨
- 사용자가 지역 클러스터에 없는 비디오를 요청할 경우의 전송 과정
- 그 지역 클러스터는 해당 비디오를 중앙 서버나 다른 클러스터로부터 전송받음
- 전송받은 비디오를 사용자에게 서비스하는 동시에 복사본을 만들어 저장
CDN 동작
CDN의 전체적인 동작
- 사용자 호스트의 웹 브라우저가 URL을 지정함으로써 특정 비디오의 재생을 요청
- CDN은 그 요청을 가로채 그 시점에서 클라이언트에게 가장 적당한 CDN 클러스터 선택
- 클러스터 선택 방법은 아래에서 기술
- 클러스터 선택 방법은 아래에서 기술
- 클라이언트 요청을 해당 클러스터의 서버로 연결
CDN이 사용자의 요청을 가로채고 다른 곳에 연결하는 절차
- 대부분의 CDN은 사용자 요청을 가로채고 연결하는데 DNS를 활용
DNS 활용 예시
- A라는 콘텐츠 제공자가 a라는 CDN 업체를 이용해 비디오를 고객에게 분배 가정
→ A의 웹페이지에서는 각 비디오가 URL을 할당받음
- URL에는 ‘video’라는 문자열과 고유한 ID를 포함한다.
- ex ) 트랜스포머 7의 비디오 → http://video.A.com/6Y7B23V
DNS를 사용하여 가로채는 과정
- DNS 서비스를 수행하는 과정에서 클라이언트의 LDNS 서버의 주소를 알게 됨
- 사용자가 A의 웹 페이지를 방문
- 사용자가 http://video.A.com/6Y7B23V 링크를 클릭
→ 사용자의 호스트는 video.A.com에 대한 DNS 질의를 보냄 - 사용자의 지역 DNS 서버(LDNS)는 호스트 이름의 ‘video’ 문자열을 감지
→ 해당 질의를 A의 책임 DNS 서버로 전달
- A 책임 DNs 서버는 해당 DNS 질의를 a로 연결하기 위해,
IP 주소 대신 a의 호스트 이름을 LDNS에게 알려준다.- a의 호스트 이름 : c1105.a.com
- a의 호스트 이름 : c1105.a.com
- A 책임 DNs 서버는 해당 DNS 질의를 a로 연결하기 위해,
- 사용자의 LDNS는 c1105.a.com에 대한 두 번째 질의를 보냄
→ 이는 a 콘텐츠 서버의 IP 주소로 변환되어 LDNS에게 응답됨
→ 이때, 클라이언트가 콘텐츠를 전송받게 될 서버가 결정- 이 시점부터 DNS 질의는 a의 사설 DNS 구조로 들어가게 된다.
- 이 시점부터 DNS 질의는 a의 사설 DNS 구조로 들어가게 된다.
- LDNS는 콘텐츠를 제공할 CDN 서버의 IP 주소를 사용자 호스트에게 알려준다.
- 클라이언트는 a 서버의 IP주소를 얻고 나면, 해당 IP 주소로 직접 TCP 연결을
설정하고 비디오에 대한 HTTP GET 요청을 전송한다.
- DASH가 사용될 경우
- 서버는 매니페스트 파일을 클라이언트에게 전송
- 매니페스트 파일은 각기 다른 버전의 비디오에 대한 URL 목록을 포함
- 매니페스트 파일은 각기 다른 버전의 비디오에 대한 URL 목록을 포함
- 클라이언트는 동적으로 각기 다른 버전의 chunk 데이터를 선택
- 서버는 매니페스트 파일을 클라이언트에게 전송
- DASH가 사용될 경우
클러스터 선택 정책
- 클라이언트를 동적으로 어떤 서버 클러스터/ CDN 데이터 센터로 연결하는 방식
- CDN 구축의 핵심 중 하나
- IP 주소를 알아낸 CDN은 해당 IP 주소를 기반으로 최선의 클러스터를 선택해야 함
- CDN은 각기 고유한 클러스터 선택 정책을 사용한다.
일반적인 클러스터 선택 기법
지리적으로 가장 가까운 클러스터를 할당하는 기법
- 가장 간단한 클러스터 정책 중 하나
- Quova 같은 상용 지리정보 데이터베이스를 이용
→ LDNS의 IP 주소를 지리적으로 매핑 가능 - 한계점
- 대부분의 클라이언트를 대상으로 잘 동작
- But, 일부 클라이언트에선 잘 동작하지 않음
← 네트워크 경로의 길이 홉(hop)의 수에 따라 가장 가까운 클러스터가 아닐 수 있음- 지리적으로 가장 가까운 클러스터라고 가장 가까운 클러스터라고 할 수 없음
- 지리적으로 가장 가까운 클러스터라고 가장 가까운 클러스터라고 할 수 없음
- But, 일부 클라이언트에선 잘 동작하지 않음
- 일부 사용자는 멀리 있는 DNS 서버를 LDNS로 사용하도록 설정할 수 있음
→ LDNS의 IP 주소를 기반으로 선택한 클러스터는 사용자 호스트로부터 멀리 배치- DNS 기반 방법에 내재된 문제
- DNS 기반 방법에 내재된 문제
- 항상 같은 클러스터를 클라이언트에게 할당
→ 인터넷 경로의 지연이나 가용 대역폭의 변화 등을 무시
- 대부분의 클라이언트를 대상으로 잘 동작
실시간 측정 방식(real-time measurements)
- 현재의 네트워크 트래픽 상황을 반영한 클러스터 선택 방식
- 주기적으로 클러스터와 클라이언트 간의 지연 및 손실 성능에 대한 측정을 함
- 예시
- 프로브 메시지를 주기적으로 LDNS들에게 전송
- 프로브 메시지 → CDN은 각 클러스터가 ping, DNS 질의 등
- 하지만 LDNS는 프로브 메시지에 응답하지 않도록 설정되어 있다는 점
- 프로브 메시지를 주기적으로 LDNS들에게 전송