webrtc 품질 측정 기초
Post on 14-Feb-2017
262 Views
Preview:
TRANSCRIPT
WebRTC 품질 측정 기초리모트몬스터 최진호
VoIP 품질지표 - MOS (Mean Opinion Score)- 청취자들의 주관적인 음성품질의 1-5단계 측정법
- PESQ (Perceptual Evaluation of Speech Quality)
- 원래 신호 대비 수신 신호의 패킷 손실율 기반 측정법
- E-Model- 신호대 잡음비에서 음성신호,지연,코덱등의 손상값을 차감하여 종합음성 전송품질 R 계산
- PESQ에 지연시간이 추가되고 MOS의 장점을 흡수한 형태
MobileVoIP의 품질 환경
- 단말기의 다양한 하드웨어적 특성
- 통신 환경의 다양성
- 이동중의 환경 변화의 불확실성
- 모바일 UX의 다양성
WebRTC 품질관리의 범위
품질 요인 품질 기준
A BS S C E
단말기 성능네트워크 종류단말기간 지역적 거리단말기와 서버간 지역적 거리TURN 가용력 대 부하량
MOS, PESQ, E-Model접속율 혹은 접속 실패율Setup timeLatency or delay통신 유지율그리고 통화 품질(QOS or QOE)
WebRTC 품질 요소 - Bandwidth
- 대역폭
- 네트워크상 가용한 최대 전송속도(Mbps or Kbps)
- WebRTC엔진은 기본적으로 BWE(BandWidth Estimation) 엔진 탑재
-
WebRTC 품질 요소 - Packet loss
- 실제 전송한 패킷수 대비 수신측에서 받지 못한 패킷의 수(퍼센트)
- WebRTC에서 number of packets lost = 기대했던 패킷 수 - 수신한 패킷 수
- 단일 packet loss도 중요하나 burst packet loss도 중요
- MLBS (Mean Loss Burst Size): 연달아 발생하는 packet loss 크기의 평균값
- 01010101 = 1- 11110000 = 4
WebRTC 품질 요소 - Delay
- 패킷을 보낸 시간과 받은 시간의 차이- RTT (Round Trip Time)으로 측정- delay와 latency는 동일하게 사용
WebRTC 품질 요소 - jitter
- 연속적인 패킷을 받은 시간(delay)의 변동폭
- WebRTC에서 정의하는 jitter 계산법- D(i, j) = (Rj − Sj ) − (Ri − Si)- J(i) = J(i − 1) + (|D(i − 1, i)| − J(i −
1))/16- webrtc엔진은 음성/영상 엔진 각각 jitter
buffer를 갖고 있으며, 오류 보정과 packet loss등 다양한 품질에서 품질을 보정하기 위한 용도로 사용
https://w3c.github.io/webrtc-stats/
WebRTC 품질 요소 - CPU 사용율 혹은 온도
- 다양한 사용자 경험에 영향을 미침- 모바일에서 WebRTC사용의 최소 사양은
2.5Ghz, 2MB RAM이지만 장시간 사용시 CPU의 성능이 매우 중요
- 온도는 디바이스를 쥐는 경험에서도 중요하지만 더욱 중요한 것은 장시간 사용시 온도가 높아지고 결국 CPU스로틀링을 감지할 수 있는 수단이기 때문
http://ieeexplore.ieee.org/document/7231206/
WebRTC- stats - codec- inbound-rtp- outbound-rtp- peer-connection- data-channel- track- transport- candidate-pair- local-candidate- remote-candidate- certificate
https://www.w3.org/TR/webrtc-stats
WebRTC- firefox stats
- inboundrtp : outbound_rtcp_video/audio, inbound_rtp_video/audio
- outboundrtp : outbound_rtp_vide/audio, inbound_rtcp_audio/video
- candidatepair list (selected=true)- localcandidate- remotecandidate
WebRTC- chrome webrtc-internals
WebRTC- chrome stats
- googCertificate: local에서 사용하고 certificate 자체 용도로도 사용하는 DTLS certificate 정보
- googComponent: certificate 통계와 connection간의 접착제 역할을 수행합니다. 즉, 현재 active한 candidate 쌍들에 대한 링크를 가짐
- googCandidatePair: ICE Candidate 쌍- 송수신된 패킷과 bytes의 전체 수(bytesSent,
bytesReceived, packetsSent; packetsReceived는 알수없는 이유로 missing)
- 현재 active한 connection인지 여부- 송수신된 STUN 요청 및 수신의 수(requestsSent,
responsesReceived, requestsReceived, responsesSent)
- googRtt: 마지막 STUN요청의 RTT- googTransportType: 전송 type
- localCandidate/remoteCandidate
WebRTC- chrome stats
- SSRC:peerconnection을 통해서 송수신되는 음성 혹은 영상 트랙 하나를 담당
- SSRC의 공통 값- media: 음성인지 영상인지- googTrackId: 대상 트랙 id- googRTT: RTCP통해 측정된 RTT- googCodecName: 코덱의 이름- bytesSent, bytesReceived, packetsSent,
packetsReceived(송신인지 수신인지에 따라): 누적값. 이전값과 함께 적절한 계산 필요
- packetsLost: 잃어버린 패킷수- SSRC- Voice
- audioInputLeve, audioOutputLevel(표준= audioLevel): 음성신호가 마이크 혹은 스피커에서 오는지 여부
- googJitterReceived/googJitterBufferReceived: 수신된 Jitter의 양 정보, jitter buffer state에 대한 정보
WebRTC- chrome stats
SSRC video
- googNacksSent- googPLIsSent- googFIRsSent- googFrameWidthInput, googFrameHeightInput,
googFrameRateInput: 입력된 frame size와 frame rate- googFrameWidthSent, googFrameHeightSent,
googFrameRateSent: 실제 전송된 frame 정보
VideoBWE: bandwidth 예측값
- googAvailableReceiveBandwidth: 수신중인 영상을 위해 가용한 bandwidth
- googAvailableSendBandwidth: 송신중인 영상을 위한 가용한 bandwidth
- googTargetEncBitrate: 영상 인코더가 목표로 하는 bitrate- googActualEncBitrate: 영상 인코더의 실제 초기 bitrate- googTransmitBitrate: 실제 전송하는 bitrate
WebRTC- simulator NetEM
vs Dummynet
top related