프로그래밍[Univ]/네트워크

[네트워크] 멀티미디어 네트워킹 Part 2

Cloud Travel 2012. 10. 19. 01:01

* 대화식 멀티미디어

 - 인터넷 전화를 생각하면 된다.

 - 통화자의 음성은 말하는 구간(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%를 사용한다.