Notice
Recent Posts
Recent Comments
Link
투케이2K
111. (Aws/Amazon) [Aws Kinesis Video Streams] Aws Kvs WebRTC 최대 시청 시간 및 세션 유지 시간 , Idle Timeout 정리 본문
Aws (Amazon)
111. (Aws/Amazon) [Aws Kinesis Video Streams] Aws Kvs WebRTC 최대 시청 시간 및 세션 유지 시간 , Idle Timeout 정리
투케이2K 2025. 9. 9. 20:23728x90
[개발 환경 설정]
개발 환경 : Aws / Amazon Web Services

[설명 정리]
// --------------------------------------------------------------------------------------
[개발 및 환경]
// --------------------------------------------------------------------------------------
- 인프라 : Aws / Amazon Web Services
- 기술 구분 : Aws / Aws Kinesis Video Streams / WebRTC
- 사전) AWS KVS WebRTC 설명 :
>> WebRTC 란 웹, 애플리케이션, 디바이스 간 중간자 없이 오디오나 영상 미디어를 포착하고 실시간 스트림할 뿐 아니라, 임의의 데이터도 교환할 수 있도록 하는 기술입니다
>> WebRTC 는 간단한 API 를 통해 웹 브라우저, 모바일 애플리케이션 및 커넥티드 디바이스 간에 실시간 통신을 활성화할 수 있습니다
>> WebRTC 주요 용어 :
- SDP (Session Description Protocol) : 오디오/비디오 코덱, 해상도, 포트 등 스트리밍 정보를 담은 텍스트 포맷
- Offer / Answer : 통신 연결을 협상하기 위한 SDP 메시지 (초기 연결 설정)
- ICE (Interactive Connectivity Establishment) : NAT/P2P 환경에서도 연결 가능한 경로(IP, 포트 등)를 찾기 위한 기술
- Candidate : 가능한 연결 경로 (IP + Port 조합)
>> WebRTC [ICE] 연결 형태 :
- Relayed Address : TURN 서버가 패킷 릴레이를 위해 할당하는 주소
- Server Reflexive Address : NAT 가 매핑한 클라이언트의 공인망 (Public IP, Port)
- Local Address : 클라이언트의 사설주소 (Private IP, Port)
>> WebRTC STUN 및 TURN 서버 설명 :
- (같은 와이파이 망) STUN 서버는 HOST 를 거쳐 >> Server Reflexive Address 만을 응답하지만,
(릴레이서버 사용) TURN 서버는 Relayed Address와 Server Reflexive Address 를 모두 응답한다
- STUN, TURN 서버를 이용해 SDP Answer IP주소 를 취득 >> RTCPeerConnection Remote 연결 수행
>> WebRTC SDP 오퍼 생성 (뷰어) 및 응답 (마스터) 스트리밍 플로우 :
[Viewer → Signaling Server] -- SDP Offer --> [Master] : 뷰어는 마스터로 스트리밍 오퍼 신호 보낸다
[Master] -- SDP Answer --> [Viewer] : 마스터는 특정 뷰어의 오퍼 신호 확인 후 응답을 보낸다
[Viewer] -- ICE Candidate --> [Master] : 스트리밍을 할 수 있는 경로 확인
[Master] -- ICE Candidate --> [Viewer] : 스트리밍을 할 수 있는 경로 확인
P2P 연결 성립 → 스트리밍 시작
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[설 명]
// --------------------------------------------------------------------------------------
1. AWS Kvs WebRTC 하나의 신호 채널에는 하나의 마스터 (Master) 와 하나 이상의 뷰어 (Viewer) 만 연결할 수 있습니다
>> 여러 개의 마스터를 하나의 신호 채널에 연결하는 것은 불가능합니다
>> ConnectAsMaster : 한 채널당 1명만 연결 가능 (동시 마스터 연결 불가)
>> ConnectAsViewer : 한 채널당 최대 10명까지 동시 시청 가능
2. 세션 유지 및 스트리밍 시간 제한 설명 :
>> 최대 연결 시간 (Connection Duration) : Master와 Viewer 모두 최대 1시간까지 연결 유지 가능
>> Idle Timeout (유휴 연결 시간 제한) : 연결 후 아무 활동이 없을 경우 10분 후 자동 종료
>> TURN 서버 Credential 유효 시간 : TURN 서버를 통한 릴레이 연결 시, 인증 정보는 5분간 유효
- TURN 서버를 사용하는 경우, 비용이 추가될 수 있으며, 릴레이 연결 수는 채널당 최대 50개로 제한됩니다
>> WebRTC 스트리밍 세션 제한 :
- 스트리밍 세션 최대 지속 시간 : 1시간 (각 Viewer가 최대 1시간까지 스트리밍 시청 가능)
: Viewer가 1시간이 지나면 세션이 자동 종료되며, 다시 연결을 시도해야 합니다
: Viewer가 중간에 연결을 끊거나 유휴 상태가 되면 Idle Timeout (약 3~10분) 에 따라 더 빨리 세션이 종료될 수 있습니다
- Idle Timeout : 3분 (스트리밍 중단 시 자동 종료)
3. WebRTC 최대 유휴 연결 시간 (Idle Timeout) 설명 : 최대 유휴 연결 시간 약 10분
>> Idle Timeout 은 클라이언트 (Viewer 또는 Master) 가 아무런 signaling 활동이나 미디어 전송 없이 유휴 상태로 있을 경우, AWS가 자동으로 연결을 종료하는 시간입니다
>> 유휴 상태가 지속되면 서비스가 연결을 종료하고 클라이언트를 오프라인으로 표시합니다
>> 유휴 상태 기준 : signaling 메시지 없음, 미디어 전송 없음
>> 자동 종료 메시지 : GO_AWAY, RECONNECT_ICE_SERVER
4. WebRTC 최대 유휴 연결 시간 (Idle Timeout) 방지 방법 :
>> 미디어 스트림 유지 (영상/음성 전송) :
- Viewer 가 Master 로 부터 실시간 영상 또는 음성 스트림을 계속 수신하고 있어야 합니다
- 스트리밍이 중단되면 유휴 상태로 간주되어 Timeout이 발생할 수 있습니다
>> Signaling 활동 유지 :
- WebRTC는 signaling channel을 통해 연결 상태를 관리합니다
- Viewer 가 주기적으로 signaling 메시지(예: ICE candidate 교환, ping 등)를 보내면 유휴 상태로 간주되지 않습니다
>> TURN 서버 사용 시 인증 갱신 :
- TURN 서버를 사용하는 경우, 인증 정보가 5분마다 만료되므로 Viewer는 재인증 또는 ICE 재협상을 통해 연결을 유지해야 합니다
>> 클라이언트 측 Ping 또는 Keep-Alive 구현 :
- Viewer 클라이언트에서 WebSocket signaling channel에 ping 메시지를 주기적으로 전송하면 유휴 상태를 방지할 수 있습니다
- 예 : 1~2분 간격으로 ping 메시지 전송
- JavaScript 기반 뷰어 Ping 유지 코드
const signalingSocket = new WebSocket(signalingChannelUrl);
setInterval(() => {
if (signalingSocket.readyState === WebSocket.OPEN) {
signalingSocket.send(JSON.stringify({ action: "PING" }));
}
}, 60000); // 60초마다 ping 전송
5. TURN 서버 Credential 유효 시간 설명 : 기본적으로 약 300초 (5분)
>> TURN 서버 인증 정보 (TURN credentials) 는 AWS 의 GetIceServerConfig API를 통해 발급되며, 이 정보에는 TTL (Time-To-Live) 값이 포함되어 있습니다
>> Viewer 가 TURN 서버를 통해 연결되더라도 세션 자체는 최대 1시간까지 유지될 수 있습니다. 단, TURN 서버 인증 정보가 5분마다 만료되므로, 클라이언트는 인증 정보를 갱신하는 로직을 포함해야할 수 있습니다
setInterval(() => {
// 5분마다 TURN 인증 정보 재요청
fetchNewTurnCredentials();
// ICE Restart 수행
peerConnection.restartIce();
}, 300000); // 300,000ms = 5분
>> Viewer 의 지속 시청 하기 위한 조건 : TURN Credential 이 만료되더라도 기존 연결은 유지됩니다
- TURN 서버를 통해 연결된 이후, ICE 연결이 성공적으로 설정된 경우
- 중간에 ICE 연결이 끊기지 않고 유지되는 경우
- 미디어 스트림이 계속 흐르고, Viewer 가 유휴 상태가 아닌 경우
>> 재협상 및 재연결이 필요한 경우 : WebRTC 연결 재설정 및 스트리밍 재시작
- 네트워크 변화 (예 : Wi-Fi → LTE 전환) 등으로 ICE 연결이 끊긴 경우 (만료된 TURN Credential 로는 재연결이 불가능합니다)
- ICE 연결은 네트워크 환경에 따라 달라지며, 네트워크 환경이 변경 되는 경우 기존 ICE 연결은 무효화되고 새로운 ICE 연결을 재협상(ICE Restart) 해야 합니다
: IP 주소 변경 (Wi-Fi → LTE 전환 시 발생)
: NAT 환경 변화
: TURN 서버 연결이 끊김
>> Viewer WebRTC 연결 재설정 및 스트리밍 재시작 방법 :
- signaling channel 을 통해 다시 연결 요청
- 새로운 ICE candidate 교환
- 필요 시 TURN credential 재요청
- Viewer 는 Master 에게 다시 연결 요청을 보내고, Master 는 새로운 PeerConnection 을 생성해 스트림을 다시 전송
- 즉, 네트워크 변경 감지 후 GetIceServerConfig → createOffer → setLocalDescription → signaling 전송 → setRemoteDescription 순으로 재연결을 수행합니다
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
[자바스크립트 AWS WebRTC 실시간 동영상 재생 수행]
https://blog.naver.com/kkh0977/223170500993?trackingCode=blog_bloghome_searchlist
[Aws Kvs WebRTC 실시간 영상 재생 관련 구성 요소 및 용어 정리]
https://blog.naver.com/kkh0977/223858189791
[Aws KVS WebRTC 채널 생성 및 삭제에 관한 요금 정책 정리]
https://blog.naver.com/kkh0977/223995447546
[신호 API 서비스 할당량]
https://docs.aws.amazon.com/kinesisvideostreams-webrtc-dg/latest/devguide/kvswebrtc-limits.html
// --------------------------------------------------------------------------------------
728x90
반응형
'Aws (Amazon)' 카테고리의 다른 글
Comments
