CDN 기본 설정 / IP대역 / Speed Limit
CDN 서비스의 기본 캐시 설정, 엣지 서버 IP 대역, Rate Limit 및 Speed Limit 설정에 대한 가이드입니다.
기본 설정 요청 사항
| 항목 | 설정값 |
|---|---|
| CORS | * |
| Charset | utf-8 설정 제거 |
| HTTP POST method | 허용 |
| GZIP compression | 특정 고객사 요청 시 허용 (세부 하기 참고) |
| whole site 경우 | static contents 캐시 필요 확장자 없는 파일 또는 / 의 URL 요청 시 캐시 bypass |
스피디 스토리지 사용 시 유의 사항
FTP 계정 설정
| 항목 | 규칙 |
|---|---|
| FTP ID | 허용 문자 : 영문, 숫자, -, _최소~최대 : 5자 ~ 30자 |
| FTP PW | 영문 + 숫자 + 특수문자 조합 (특수문자 포함 필수) 허용 특수문자 : ! @ $ ? _최소~최대 : 4자 ~ 15자 |
전체 컨텐츠와 일부 컨텐츠의 보관 기간
| 구분 | 보관 기간 |
|---|---|
| 전체 컨텐츠 삭제 요청 시 | 보관 기간 없음. 도메인 삭제 요청 시 진행되며, 1~2일 이후 삭제 처리 |
| 일부 컨텐츠를 고객이 삭제 시 | 보관 기간 없음 |
스피디 포탈 서브 계정 생성
최대 150개 가능하며, 150개 이상 생성 시 스피디에 문의
Static Contents
bmp ejs jpeg pdf ps ttf class eot jpg pict svg webp css eps js pls svgz woff csv gif mid png swf woff2 doc ico midi ppt tif xls docx jar otf pptx tiff
지원 불가 항목
웹 소켓 (WebSocket)
CDN 기본 설정
CDN 서비스의 기본 설정값과 비고 사항입니다.
| No | 대분류 | 항목 | 기본 설정값 | 비고 |
|---|---|---|---|---|
| 1 | 포트 / 프로토콜 / 메서드 | Listen Port |
Port 구분 default : 80 option : 443 (HTTP/2 옵션) SSL 지원 버전 TLSv1, v1.1, v1.2, v1.3 (기본 1.2) ※ TLS 1.0/1.1은 보안 취약으로 비권장 기본 응답받는 HTTP method GET / HEAD |
v1.3의 경우 노후브라우저(IE6 등) 미지원 → 노후브라우저 지원용 낮은 버전의 장비는 TLS v1.3 호환 자체가 불가 IE6 지원하나 별도 요청하여 전용 서버 구축 필요 Post method 사용 시 별도 요청 필요 |
| 2 | 헤더 | 오리진 요청 시 추가되는 헤더 |
Host header X-Forwarded-For Range if-Range Cache-Control : 공백 Expires : 공백 |
|
| 3 | 클라이언트 추가되는 헤더 |
Server : NCE X-NCE-CacheResult : 캐시 상태 (hit/miss 등) |
||
| 4 | 오리진 서버가 도메인일 경우 |
도메인질의 DNS : 8.8.8.8 질의 주기 : 5분 질의 시 timeout : 300ms |
오리진 요청 시 Host header에 서비스도메인으로 요청하도록 별도 요청 필요 | |
| 5 | Response Header 용량 증설 | Response-header : 4KB | CON>Tools로 테스트 결과 Response Header 정보가 평균보다 클 경우 특정 클라이언트 사용자의 요청에서 응답이 502가 발생 가능 스피디 요청하여 해당도메인의 엣지서버 Response Header 용량 증설 요청 메일 송부 |
|
| 6 | 캐시 | 캐시 서버 설정 |
캐시서버 TTL : 24시간 (86400초) 클라이언트 캐시서버 : 2초 connection timeout : 30초 오리진 connection 이후 timeout : 3회 / 2초 오리진 retry 횟수 : 3회 재시도 이후에도 오리진이 응답없을 경우 오리진 제외 시간 : 2초 4XX, 5XX 응답에 대한 TTL : 없음 keepalive default timeout : 없음 (캐시 안함) 오리진에서 0bytes 200 응답 시 : — |
오리진이 캐시서버에서 요청 시 응답만 하고 요청 데이터를 안줄 경우 3회 반복 되면 최대 90초간 응답 대기 상태 발생 가능 3회 재시도 후 응답이 없을 시 해당 오리진은 2초간 제외되며, 504 코드로 응답 0byte 응답 시 no cache 설정 가능 셋업 시, 특정 확장자 Bypass 기입이 없는 경우 - (default) 전체 확장자 대상으로 캐시설정 - (option) Bypass 설정 요청 시 확장자 구분하여 캐시 설정 |
| 7 | stale 처리 code | 전체 5XX가 아닌 500, 502, 503, 504만 | ||
| 8 | 캐시 KEY | 서비스도메인 + URI + Argument | ||
| 9 | Gzip compression | 기본 없음 | CDNetworks에서 넘어왔으며, do/js/css 등 텍스트 파일들의 요청이 많을 경우 스피디에 gzip compression 요청 | |
| 10 | Charset | utf-8 설정 되어 있음 | 고객사 글씨깨짐이 감지되면 UTF-8 설정 제거 요청 필요 50개 이상 디렉터리 설정이 되면 기본 캐시 동작에 영향이 있으므로 사전에 고객에게 안내 필요 |
|
| 11 | Non-cacheable contents | .jsp .php .js .css .html .asp .py .cgi .pl .aspx .jspx .do .json |
이 확장자들은 기본 bypass되므로 cache가 필요한 경우 별도 요청 필요 특정 디렉터리 하위 또는 파일 or 확장자만 캐시 설정 가능 |
|
| 12 | slice (chunk) | 없음 | 수십 MB 이상의 큰 파일이 있을 경우 효율적인 캐시를 위해 1MB 단위로 slice하여 오리진에 요청 및 캐시 장점 : 속도향상/분산효과, 오리진 대역폭을 보호하며, 대용량 전송을 위한 연산과 캐시 리소스 절감 단점 : 작은 단위로 오리진에 요청하므로, 큰 파일은 여러번 오리진의 응답이 필요 |
|
| 13 | 쿼리 스트링 무시 여부 | 무시 안함 (기본 정책) | 쿼리 스트링을 별도 캐시 키로 사용. 무시 설정 시 별도 요청 필요 | |
| 14 | 릴레이 구성 | 기본 릴레이 구성 안되어 있음 | 필요 시 요청 (오리진 부하 등의 상황 시 요청하여 구성을 통해 부하 감소) | |
| 15 | Purge |
기본 soft purge cache TTL만 0으로 설정 후 오리진에 변경 여부를 etag, modified값으로 확인하며, etag를 오리진에서 주지않을 경우 modified값이 더 최신인 데이터를 캐시에서 캐시함 (만약 캐시가 오리진보다 modified값이 더 최신이면 오리진 값 받아오지 않음) |
hard purge 설정 가능 hard purge의 경우 캐시된 컨텐츠를 TTL만료 또는 퍼지 시 삭제 이후 오리진에 요청하므로 오리진의 트래픽 증가 및 오리진이 응답이 없을경우 stale로 응답되지 않아 cache TTL 만료 이후 오리진 proxy역할을 하지 못함 TTL 만료 / PURGE 동일 하게 동작하여 오리진으로부터 200 응답 수신 #오리진서버에서 304응답시, 304응답을 수신하나, 304 응답 조건관련 헤더(IMS, Etag)를 Request 시 포함하지 않음 |
|
| 16 | SNI | 기본 설정 없음 | 오리진 서버에 여러 도메인을 서비스 중일 때, SSL로 서비스 도메인을 인증할 수 있도록 하는 설정 NON-SNI 도 요청 시 별도 지원 |
|
| 17 | 인증 | Enguard (One Time Token) | 디렉터리 및 확장자 모두 설정 가능 | 기본 설정이 아니므로 별도 요청 필요 |
| 18 | Image Resizing | resize / crop / rotate / watermark / quality | resize/crop 두 가지 모드 중 1개만 사용 가능하며, crop을 비율에 맞게 자르면 resize의 효과를 얻을 수 있음 | 기본 설정이 아니므로 별도 요청 필요 |
| 19 | 통계 | 디렉터리 통계 | 없음 | 필요 시 별도 요청 필요 |
| 20 | 컨텐츠 통계 구분 | download만 | cache로 설정 요청 시 별도 요청 필요 | |
| 21 | 계정 | 생성 | ID : 5자~30자, password : 4자~15자 (! @ $ ? _ 허용) |
|
| 22 | 접속 정보 |
동시 접속자 - 최소 조회 단위 : 5분 - 조회시간 (5분, 시간, 일) 내 수행된 Active Connection 수가 가장 큰 순간의 값 |
통계 > 접속 정보 1. Request 세부 정의 : 기간 동안의 peak 요청 수 (공인 IP 중복 허용) 조회 기간 구분 : • 1일 조회 시 : 5분 단위 • 2일 이상 : 시간 단위 • 7일 이상 : 일 단위 2. 동시 접속자 세부 정의 : 조회 기간 동안 Connection 수가 최대였을 때의 IP 수 (공인 IP 중복 허용) 조회 기간 구분 : Request와 동일 3. 방문자 세부 정의 : 조회 기간 동안의 유일한 IP의 누적 값 (공인 IP 중복 제외) 조회 기간 구분 : • 1일 이상 : 1시간 단위 • 7일 이상 : 일 단위 |
|
| 23 | 스토리지 | API Upload / 업로드 계정 / 계정 제한 확인 |
https://upload.cloudn.co.kr:3443/api_sample.html https://vodupload.cloudn.co.kr:3443/api_sample.html https://fileupload.cloudn.co.kr:3443/api_sample.html |
기본 HTTP :3800 통신이나 고객의 서비스 페이지가 HTTPS이며, 최종 사용자가 upload하는 방식일 시 mixed contents 이슈 발생 됨. 좌측 도메인/포트 정보로 제공 사용자 계정 별로 홈디렉터리를 찾아가므로 접근 도메인(fileupload.~~~)이 같다면 다른 고객의 다른 도메인이라도 계정 중복 생성은 되지 않음 (하나의 DB 사용) 계정 생성 시 제한 ID : 영문, 숫자, -, _ / 1~30자 (5자 이상 권고) PW : 영문+숫자+특수문자 조합 / !, @, $, ?, _ / 4~15자 |
| 24 | Streaming | Wowza HLS Streaming | 스피디 제공 스토리지 + Wowza Streaming + CDN 캐시 사용 필요 |
고객 오리진 사용의 경우 사용 불가 (구성 시간이 오래 걸리며, network mount origin 사용으로 불안정, 퍼지 불가) 사전 데이터 이관 작업 필요 고객 플레이어 사용 시 해당 플레이어에서 hls, m3u8 재생 가능여부 확인 필요 (테스트를 통해) 초기 셋업을 위한 정보 컨텐츠 전송 프로토콜 (MMS/RTMP/기타) / 컨텐츠 코덱 (비디오/오디오) / 인코더 종류 및 프로토콜 / 인코딩 비트레이트 / 원본 비트레이트 / 최대 동접 / 예상 스토리지 사용량 Live Streaming • 고객 오리진 : RTMP 송출 → HLS 스피디 Wowza 가능 Streaming • 고객 오리진 : RTMP mp4 → HLS 스피디 Wowza 불가 • 스피디 스토리지 오리진 제공 : RTMP mp4 → HLS 스피디 Wowza 가능 기본 캐시 TTL : ts: 3분, m3u8: 1초 주의 : wildcard 퍼지 금지 (파일단위 퍼지를 권고) 디렉터리 내 파일 크기 수량에 따라 다를 수 있지만 디렉터리 하위 wildcard 퍼지 시 기본 CDN purge 처리 방식과 달리 전체 flush 후 재 캐시 하므로 다른 고객에 영향이 있음 컨텐츠 통계에 전체 object가 아닌 m3u8 만 제공 됨 (ts파일 제공 안됨) |
조회기간 별 보관기간
최대 조회 가능 기간 기준입니다.
| 대분류 | 소분류 | 1~3일 (5M term) |
4~7일 (1H term) |
8일 이상 (1D term) |
|---|---|---|---|---|
| Traffic | — | 2년 | 3년 | 3년 |
| Transfer | — | 2년 | 3년 | 3년 |
| 컨텐츠 정보 | 컨텐츠 순위 | 1년 | — | — |
| 컨텐츠 순위 (4xx, 5xx) | 1년 | — | — |
CDN 엣지 대역
CDN 엣지 서버 및 업로드 서버의 IP 대역 목록입니다.
CDN Edge IP 대역 — Supernetting (12개)
방화벽 등록 시 상위 대역으로 등록할 경우 사용합니다.
CDN Edge IP 대역 — Subnetting (23개)
정밀한 방화벽 정책 적용 시 /24 단위로 등록할 경우 사용합니다.
업로드 서버 (5개)
Rate Limit
IP 별 초당 Request 제한 설정에 대한 안내입니다.
| 항목 | 내용 |
|---|---|
| 기능 | IP 별 초당 Request 제한이 가능 |
| 동작 방식 | 1초당 10건으로 제한할 경우, 1초/10 = 100ms 에 1건만 정상 처리 |
| Key 설정 | User IP+URI 를 Key로 해서 초당 제한하는 것이 비교적 안전 (고객의 문제의 경우 해당부분의 원인 해결이 필요) |
| 기본값 | 전체 Client IP 대상 |
| 대상 설정 | 특정 IP 내 대상으로도 설정 가능 |
• 동일 네트워크를 사용하는 다수 이용자(학원/기타시설 등)에서 동일 Source IP로 요청하면 문제발생 소지가 있음
• 서버별 설정으로, 다수의 서버로 분산 요청 시 제한 되지 않음
• 적용 시 일과 시간 중 적용하고 VOC 발생 등 모니터링 하는 것이 좋음
Speed Limit
Client에서 대용량 파일이나 video 파일 등을 받을 때 속도제한(bandwidth limit)을 설정할 수 있습니다.
limit
query string을 이용하여 1초당 받을 byte(bandwidth) 설정
| 설정 | 파라미터 | 예시 URL |
|---|---|---|
| 100KB 제한 | limit=102400 | |
| 1MB 제한 | limit=1048576 | http://speedykorea.com/test/test.png?limit=1048576 |
limit_rate_after
최초 속도제한 없이 받을 byte 설정. 설정된 만큼 최초 받은 후 limit값에 의해 속도제한됨.
주로 Progressive Download에서 초기재생 또는 버퍼 시 buffer line을 늘리는 목적으로 설정하며, limit과 함께 사용합니다.
| 설정 | 파라미터 |
|---|---|
| 1MB까지 무제한 | limit_rate_after=1048576 |
| 10MB까지 무제한 | limit_rate_after=10485760 |
http://speedykorea.com/test/test.png?limit=1048576&limit_rate_after=10485760
CDN을 통한 라이브/VOD 스트리밍 서비스 구성 가이드입니다. 카메라로 촬영된 영상이 시청자에게 전달되기까지의 전체 흐름을 안내합니다.
LIVE HLS
실시간 방송을 HLS로
CDN 캐시/배포
LIVE RTMP
인코더→Wowza 인제스트
시청자 배포는 HLS 변환
VOD HLS
녹화 영상을 ABR로
자동 화질 전환 제공
VOD MP4 (PD)
MP4 파일 다운로드+재생
Progressive Download
| 프로토콜 | 방식 | 포트 | 사용 구간 | CDN 캐싱 |
|---|---|---|---|---|
| HLS | HTTP 기반 세그먼트 전송 (m3u8+ts) | 80/443 | CDN → 시청자 | 가능 |
| RTMP | 실시간 미디어 스트리밍 | 1935 | 인코더 → Wowza | 불가 |
| PD (HTTP) | Progressive Download | 80/443 | CDN → 시청자 | 가능 |
:1935
m3u8+ts
:443
:1935
m3u8+ts
SMIL + 영상 파일
m3u8+ts
360p / 480p / 720p
:443
전송량: 시간당 전송량(GB) = 비트레이트(Mbps) × 3,600초 ÷ 8 ÷ 1,024 × 동시접속자 수
LIVE 스트리밍은 비트레이트 × 동시접속자로 실시간 대역폭을 산정합니다.
| 화질 | 비트레이트 | 동접 100명 | 동접 1,000명 | 동접 3,000명 | 동접 30,000명 |
|---|---|---|---|---|---|
| 360p | 0.8 Mbps | 80 Mbps 36 GB/h |
800 Mbps 360 GB/h |
2.4 Gbps 1.08 TB/h |
24 Gbps 10.8 TB/h |
| 480p | 1.5 Mbps | 150 Mbps 67 GB/h |
1.5 Gbps 675 GB/h |
4.5 Gbps 2.03 TB/h |
45 Gbps 20.3 TB/h |
| 720p | 2.5 Mbps | 250 Mbps 112 GB/h |
2.5 Gbps 1.12 TB/h |
7.5 Gbps 3.38 TB/h |
75 Gbps 33.8 TB/h |
| 1080p | 5.0 Mbps | 500 Mbps 225 GB/h |
5 Gbps 2.25 TB/h |
15 Gbps 6.75 TB/h |
150 Gbps 67.5 TB/h |
VOD HLS는 ABR(자동 화질 전환)을 사용하므로, 평균 비트레이트 × 동시 시청자로 산정합니다. 실제로는 시청자마다 다른 화질을 사용하므로 가중 평균을 적용합니다.
| ABR 프로파일 | 비트레이트 범위 | 평균 예상 | 동접 3,000명 | 동접 30,000명 |
|---|---|---|---|---|
| 360p / 480p / 720p | 0.8 ~ 2.5 Mbps | ~1.8 Mbps | 5.4 Gbps 2.43 TB/h |
54 Gbps 24.3 TB/h |
| 480p / 720p / 1080p | 1.5 ~ 5.0 Mbps | ~3.0 Mbps | 9 Gbps 4.05 TB/h |
90 Gbps 40.5 TB/h |
VOD MP4는 파일 다운로드 방식이므로 파일 크기 × 수강자 수로 월간 전송량을 산정합니다. 동시접속보다 총 다운로드 횟수가 기준입니다.
| 영상 크기 | 영상 길이 (참고) | 수강자 3,000명 1회 시청 기준 |
수강자 30,000명 1회 시청 기준 |
동접 3,000명 동시 다운로드 대역폭 |
|---|---|---|---|---|
| 500 MB | ~30분 (720p) | 1.5 TB | 15 TB | ~2 Gbps 500MB÷1,800초×3,000×8 |
| 1 GB | ~60분 (720p) | 3 TB | 30 TB | ~4 Gbps 1GB÷3,600초×3,000×8 |
| 2 GB | ~90분 (1080p) | 6 TB | 60 TB | ~5.3 Gbps 2GB÷5,400초×3,000×8 |
| 5 GB | ~120분 (1080p) | 15 TB | 150 TB | ~8.9 Gbps 5GB÷7,200초×3,000×8 |
• LIVE = 비트레이트(Mbps) × 동접 수 = 필요 대역폭(Mbps)
• VOD HLS = 평균 비트레이트(Mbps) × 동접 수 = 필요 대역폭(Mbps)
• VOD MP4 = 파일 크기(GB) × 다운로드 수 = 월간 전송량(TB)
HLS(HTTP Live Streaming)는 Apple이 개발한 스트리밍 프로토콜로, 영상을 작은 세그먼트(.ts)로 분할하여 HTTP로 전송합니다. 모든 브라우저/모바일에서 재생 가능하며 CDN 캐싱에 최적화되어 있습니다.
RTMP 송출
HLS 변환
캐시/배포
m3u8 재생
| 단계 | 동작 | 파일 |
|---|---|---|
| 1. 분할 | H.264+AAC 영상을 2~10초 단위 세그먼트로 분할 | .ts 파일 |
| 2. Manifest 생성 | 세그먼트 재생 순서가 작성된 매니페스트 파일 생성 | .m3u8 (playlist) |
| 3. CDN 캐싱 | CDN이 m3u8과 ts 파일을 캐시하여 엣지에서 배포 | HTTP GET |
| 4. 재생 | 플레이어가 m3u8을 읽고 ts를 순차 다운로드하며 재생 | ABR 자동 전환 |
| 항목 | 설정 | 비고 |
|---|---|---|
| CDN 도메인 | live.cdn.speedykorea.com | 시청자 접속 URL |
| m3u8 캐시 TTL | 1~3초 | LIVE이므로 짧게 |
| ts 캐시 TTL | 30~60초 | 세그먼트는 불변 |
| 오리진 이중화 | Active/Backup | Failover 2~5분 |
| Timeout | 30초 | 기본값, 변경 가능 |
RTMP(Real-Time Messaging Protocol)는 인코더에서 미디어 서버(Wowza)로 영상을 실시간 전송하는 프로토콜입니다. 최종 시청자에게는 HLS로 변환하여 CDN을 통해 배포합니다.
| 항목 | 설정값 | 설명 |
|---|---|---|
| 서버 URL | rtmp://[wowza-ip]:1935/live | Wowza RTMP 수신 주소 |
| 스트림 키 | stream_name | Application 내 스트림 이름 |
| 비디오 코덱 | H.264 (x264) | 필수 |
| 오디오 코덱 | AAC (44.1/48kHz) | 필수 |
| 비트레이트 | 1,000~4,000 kbps | 해상도/대역폭에 따라 |
| 키프레임 간격 | 1~2초 | 필수 HLS 세그먼트 기준 |
| 해상도 | 1280x720 (720p) | 또는 1920x1080 |
| 항목 | 설정 | 설명 |
|---|---|---|
| Application Type | Live | 실시간 전용 |
| HLS Packetizer | 활성화 | RTMP → HLS 변환 |
| Chunk Duration | 2초 | ts 세그먼트 길이 |
| Chunk Count | 5개 | m3u8 내 세그먼트 수 |
VOD HLS는 녹화된 영상을 여러 화질로 분할(SMIL)하여 시청자 네트워크 상태에 따라 최적의 화질을 자동 전환(ABR)하며 제공하는 방식입니다.
SMIL + 영상 파일
HLS 캐시/배포
ABR 자동 화질 전환
| 단계 | 동작 |
|---|---|
| 1. Manifest 요청 | 플레이어가 m3u8 파일을 서버에 요청 |
| 2. 파싱 | m3u8에서 화질별(720p/480p/360p) 스트림 정보 파악 |
| 3. 대역폭 측정 | 사용자 네트워크 대역폭을 실시간 측정 |
| 4. 최적 화질 선택 | 대역폭에 맞는 최적 화질의 세그먼트를 다운로드 |
| 5. 자동 전환 | 네트워크 변화 시 화질 자동 전환 (끊김 최소화) |
| 항목 | 설정 | 비고 |
|---|---|---|
| CDN 도메인 | hls.cdn.speedykorea.com | 시청자 접속 URL |
| 캐시 TTL | 3600초 | VOD이므로 길게 설정 가능 |
| SMIL 파일 | Wowza에서 자동 생성 | 멀티 비트레이트 매핑 |
PD(Progressive Download)는 MP4 파일을 HTTP로 다운로드하면서 동시에 재생하는 방식입니다. HLS와 달리 단일 파일을 그대로 전송하며, 화질 자동 전환(ABR)은 지원하지 않습니다.
MP4 파일 저장
MP4 캐시/배포
다운로드+재생
| 항목 | VOD HLS | VOD MP4 (PD) |
|---|---|---|
| 전송 방식 | 세그먼트 분할 전송 (.ts) | 단일 파일 전송 (.mp4) |
| ABR 지원 | 지원 (자동 화질 전환) | 미지원 (고정 화질) |
| 재생 시작 | 첫 세그먼트 로드 후 즉시 | MP4 헤더(moov) 로드 후 |
| 구간 탐색 | 세그먼트 단위 탐색 | byte-range 탐색 |
| Wowza 필요 | 필요 (또는 Storage) | 불필요 (HTTP 서버만) |
| 적합 용도 | 대규모 동접, 모바일 최적화 | 소규모 다운로드, 간단한 재생 |
| 항목 | 설정 | 비고 |
|---|---|---|
| CDN 도메인 | vod.cdn.speedykorea.com | 시청자 접속 URL |
| 캐시 TTL | 3600초 이상 | 영상 파일 불변 |
| Range 요청 | 지원 필수 | 구간 탐색(Seek)에 필요 |
ffmpeg -movflags faststart 옵션으로 moov를 앞으로 이동하면 즉시 재생이 가능합니다.