일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- kurento
- stash
- underscore
- corsmiddleware
- 기초
- 자바스크립트
- 표준출력
- minikube
- kubernetes
- 위코드
- Docker Compose
- 쿠버네티스
- 6.6.0
- RTCP
- docstring
- 표준에러
- onicecandidate
- 7.0.0
- revert
- fastapi
- 리눅스
- 파이썬
- JavaScript
- Docker
- 도커
- Dockerfile
- 미니큐브
- 명령어
- 독스트링
- Python
- Today
- Total
Devlog
ICE_GATHER_CANDIDATES_ERROR 본문
Kurento 미디어 서버를 사용하여 그룹 화상 채팅을 테스트하는 중 아래와 같은 에러가 발생했다.
특정 채팅 방에 참여한 참여자가 5명을 초과할 때마다 계속해서 에러가 발생했다. 이외에도 서버를 이용하는 둘 이상의 방이 있을 때도 특정한 기준 없이 여러 명이 참여하는 순간에 계속해서 에러가 발생했다.
원인은 내가 미디어 서버를 열었을 때 지정한 RTP 포트의 범위가 문제였다. 도커 컨테이너를 통해 미디어 서버를 사용했는데, Kurento 설치 가이드가 제시해 준 대로 컨테이너를 생성하여 사용하였다.
// 설치 가이드가 제시한 방법
docker run --rm \
-p 8888:8888/tcp \
-p 5000-5050:5000-5050/udp \
-e KMS_MIN_PORT=5000 \
-e KMS_MAX_PORT=5050 \
kurento/kurento-media-server:7.0.0
위의 명령줄을 확인하면 KMS_MIN_PORT와 KMS_MAX_PORT를 설정해준다. 여기서는 5000 - 5050 포트를 사용해 주는 것으로 되어있다. 그러면 가용한 포트가 총 50개가 있다는 말이 된다.
https://doc-kurento.readthedocs.io/en/latest/user/configuration.html#rtp-ports
여기서 화상 채팅을 할 때 참여자가 5명이라면 각 참여자 마다 오디오, 비디오 스트림을 전송할 포트들이 필요한데 WebRTC의 경우 기본적으로 RTCP Multiplexing (rtcp-mux)을 사용한다고 한다.
RTCP Multiplexing(rtcp-mux)은 RTP (Real-time Transport Protocol) 및 RTCP (Real-time Transport Control Protocol) 트래픽을 동일한 포트와 전송 경로를 사용하여 전송하는 기술이다. 일반적으로 RTP와 RTCP는 서로 다른 포트(일반적으로 RTP가 짝수 포트, RTCP가 그 다음 홀수 포트)를 사용하여 전송한다. 그러나 rtcp-mux를 사용하면, 둘 다 같은 포트를 사용하여 전송할 수 있는 것이다. 그러면 결국 각 참여자마다 오디오, 미디어 2개의 포트가 필요하다는 것이고, 5명이면 총 10개의 포트를 사용하게 된다.
처음에 설정해 준 50개의 포트에 비하면 아직 가용한 포트가 많이 남아있는데, 왜 문제가 생겼을까?
이론적으로는 문제가 없지만 실제 환경에서는 다양한 변수가 존재한다고 한다. 아래는 ChatGPT의 관련 답변이다.
다양한 원인이 있는 것으로 보인다. 이 이상은 너무 깊은 내용으로 갈 것 같아 이 정도까지만 알아 두는 것으로 하였다.
만약 Kurento 사용 중 같은 ICE_GATHER_CANDIDATES_ERROR 에러를 마주한다면 포트 범위를 고려해 보도록 하자.
'기타' 카테고리의 다른 글
SyntaxError: WebRtcEndpoint doesn't accept events of type 'OnIceCandidate' (0) | 2023.08.08 |
---|---|
잊어버리기 쉬운 깃 명령어 정리 (0) | 2023.02.27 |