* 대화식 멀티미디어
- 인터넷 전화를 생각하면 된다.
- 통화자의 음성은 말하는 구간(Talk)과 묵음 구간(silent)이 반복된다.
> 말하는 구간은 64kbps(if using the PSM coding)
> 패킷은 말하는 구간에서 생성
> 20msec마다 패킷을 만들어서 전송
~ 64000 bit / sec = 8000 byte / sec
~ 8000 byte / sec * 20/100 sec = 160 byte(패킷 하나의 크기)
> packet과 해더는 UDP datagram으로 캡슐화 한다.
※ RTP는 추후에 설명하도록 하겠다.
* 인터넷 전화는 패킷 손실과 지연이 발생할 것이다.
- 네트워크에서의 손실 : Buffer overflow of Router / congestion / 근본적 해결 불가
- 지연 손실 : Packet이 수신자에게 너무 늦게 도착하여 쓸모가 없는 경우
- 지연 허용치 : 400 ms(Human Factor)
- 손실 허용치 : 인코딩 방식에 따라 손실 처리방법은 1%~10% 사이
* 인터넷 전화 또한 네트워크 기반이므로 지연 변이가 발생 할 것이다.
- 지연 변이에 대비로 멀티미디어 네트워킹에선 Buffering을 사용했다.
- 실시간 대화의 경우 이 시간 설정에 한계가 있다.(허용한도 : 20msec)
- 지연 손실/변이에 대비하는 방식
ⓐ 고정 재생 지연
~ Buffered time(Q)을 두어서 재생을 하는 것.
~ Q가 크면 패킷의 손실은 줄어든다. Q가 작으면 더 좋은 품질의 대화가 가능하다.
~ Q에 따른 사람의 반응( 150msec미만 : 감지 못함/150~400msec : 감지하지만 대화 방해X/400msec 이상 : 대화가 방해됨)
ⓑ 적응 재생 지연(Adaptation)
~ Packet을 재생하는 시간을 유동적으로 하자.(재생 지연 시간 Q를 유동적으로 한다.)
~ 재생 지연을 최소화 하고 손실율을 낮추는 효과가 있다.
~ 가중 평균 기법을 사용해여 동적으로 지연시간(Q)을 결정한다.
~ Silent 구간 뒤에 패킷이 온다면, Q가 비이상적인 값을 갖을 수 있다. 따라서, 수신자는 말하는 Time을 알아야한다.
> 이러한 경우 Time-stamp와 함께 일련번호를 확인한다.
> 일련 번호는 송신자가 패킷을 전송할 때마다 순차적으로 전송해주는 값이다.
> 일련 번호의 interval을 통해서 손실 여부를 파악한다.
> 이렇게, 인터넷 전화를 할 때 필요한 추가적 정보를 담는 프로토콜을 RTP라고 한다.
* 인터넷 전화에서 패킷 손실 복구하는 방법
- 네트워크 상에서 일반적으로 재전송 기법을 사용해서 패킷 손실을 복구했다.
- 하지만, 실시간 서비스인 인터넷 전화에서의 재전송은 의미는 없다.
따라서, FEC(Foward Error Correction) 에러 복구를 사용한다,
- FEC 기법
ⓐ 가장 간단한 방법
~ n개의 패킷을 그룹화 하여 XOR 연산을 한 중복 패킷을 보낸다.
~ 이 패킷은 n개의 패킷 전송 뒤에 따라서 보내지게 된다. 이를 위해 대역 낭비가 1/n만큼 발생한다.
~ 손실이 발생할 시 중복 패킷과 패킷들의 XOR연산으로 추측(복원)해낸다.
~ 복원하는 측면에서 n이 작을 수록 좋지만, n이 작을 수록 대역 낭비가 커지므로 효율적이지 않다.
~ n이 커진다면, 패킷 그룹에서 1개를 초과하는 패킷 손실이 발생할 확률이 높아진다.
이는 이 방법으로 복원을 완벽하게 할 수 없는 상태가 되는 것을 보여준다.
ⓑ 2nd FEC 방법
~ ⓐ방법보다 실질적인 방법으로 보내진 패킷을 압축(저품질로 변경)하여 다음 패킷에 합쳐서 보내는 것이다.
~ 패킷 손실이 발생하면, 다음 패킷에서 저품질 패킷을 가져와 재생시킨다.
~ 연속적인 손실이 없다면 손실을 복구 할 수 있다.
ⓒ 인터리빙(interleaving)
~ 여러개의 패킷을 n msec길이로 분해하여 여러개의 패킷을 섞에서 보낸다.
~ 하나의 패킷이 손실되어도 재생되는데 많은 영향을 끼치지 않는다.
* RTP(Real-Time Protocol)
- RTP는 멀티미디어 데이터를 전송하는 패킷의 구조를 정의한다.
- RTP에는 페이로드 유형, 패킷의 일련 번호, 타임 스템프등의 정보를 담고 있다.
- UDP 패킷으로 캡슐화 된다.
- 인터넷 전화상에서는 양말단이 모두 RTP로 동작해야지 서로 통화가 가능하다.
- RTP는 QoS를 보장하기 위해서 있는 것이 아니다. RTP와 QoS는 서로 무관하다.
- RTP Header
> Payload type : 현재 패킷에서 사용된 인코딩 유형을 표시하여 변복조시 서로 유형을 맞추기 위해서 사용
> Sequence number : RTP 패킷을 전송할때마다 하나씩 증가하며, 패킷 손실여부 파악을 위해서 사용
> Time-stamp : PRT 패킷의 첫번째 바이트를 샘플링하는 시간. 샘플링 할때마다 1씩 증가시킨다.
Payload를 통해 인코딩 유형을 알기 때문에 시간을 계산해낼 수 있다.
> SSRC : RTP스트림의 소스를 명시
* RTCP(Real-Time control Protocol)
- RTSP(Real-Time stream Protocol)과 혼동하지 말 것
- RTP와 협력하여 동작
- PRTC패킷은 송신한 패킷의 수, 손실된 패킷의 수, 패킷의 도착 시간 변이등 송수신 상태를 교환할때 사용한다.
> 이 정보를 사용하여 성능을 향상 시키는데 사용한다. (전송율을 조정)
- RTP와 포트 번호로 구분을 한다.
- RTCP는 같은 세션 내에 있는 RTP 미디어 스트림을 동기화 시킬 수 있다.
> RTP 패킷의 타임 스탬프, 패킷이 생성될 때의 시간을 이용하여 동기화시킴
ex) 화상 회의시 video RTP 스트림과 audio RTP 스트림이 전송되며, 이를 RTCP가 동기화 하여 일치화 시켜 보여준다.
- RTCP 트래픽은 세션 대역의 5%이내로 제한한다.
> 과도하게 보내면 대역 낭비를 이르켜 오히려 효율을 낮출 수 있다.
- RTCP 트래픽은 수신자가 75% 송신자가 25%를 사용한다.