Fixed 모드 지터 버퍼 결과("VoIP 지터 버퍼(3) - Fixed 모드" 참조)와 Adaptive 모드 지터 버퍼의 결과("VoIP 지터 버퍼(4) - Adaptive 모드" 참조)를 비교해 보면, Adaptive 모드 지터 버퍼의 MOS 결과 값은 매우 낮다. 예를 들어 균등 분포 40ms의 네트워크 패킷 지연(시나리오3)에 대해서 60ms 크기의 Fixed 모드 지터 버퍼를 사용시 MOS 값은 약 4.2 정도인데 비해, Adaptive 모드 지터 버퍼 사용시 MOS 값은 약 3.2 정도에 불과하다.

 


얼핏 생각하면 Adaptive 모드는 네트워크 상태에 적응하며 계속 지터 버퍼의 크기를 변화시키므로 더 좋은 성능을 보여야 할 것 같은데, Riverbed(OPNET) Modeler 시뮬레이션 결과는 그렇지 않다. 무엇이 잘못된 것일까?
이는 시뮬레이션이 잘못되었기 때문이 아니며, 지터를 정확히 예측할 수 없기 때문에 발생하는 현상이다. 즉, Adaptive 모드에서는 현재 측정된 패킷 간격 정보로부터 앞으로 "발생할" 패킷 간격을 예측하여 지터 버퍼 크기를 변경한다. 따라서 이 예측이 틀리는 경우에는, 지터 버퍼 지연이나 지터 버퍼 패킷 손실에서 손해를 보게 된다.
현재의 IP 네트워크에서 향후에 발생할 지터를 정확히 예측한다는 것은 현실적으로 불가능한 일이다. Riverbed(OPNET) Modeler에 구현된 지터 버퍼의 Adaptive 모드 역시 예측이 틀리는 경우가 발생하며, 이러한 이유로 지터의 범위가 커지면 Adaptive 모드 사용시 MOS 값도 상당히 낮아진다.

Posted by 신상헌
,

Adaptive 모드일 때 지터 버퍼의 최초 크기 계산 과정은 일반적인 지터 버퍼 크기 계산 과정과 동일하다. 즉, Nominal Value는 사용되지 않으며, packetization delay와 지터 버퍼의 Minimum/Maximum Value를 이용하여 최상의 MOS 값을 얻을 수 있는 지터 버퍼 크기가 선택된다.

Posted by 신상헌
,

Adaptive 모드 지터 버퍼는 고정 크기의 지터 버퍼를 사용하지 않고, 현재의 VoIP 패킷 간격에 맞추어 지터 버퍼의 크기를 계속 변경해가면서 사용하는 방식이다. Fixed 모드 지터 버퍼와의 비교를 위해서 동일한 시험망("VoIP 지터 버퍼(3) - Fixed 모드" 참조)에서 지터 버퍼 설정만 변경하여 Adaptive 모드 지터 버퍼의 효과를 확인해보았다.
음성 코덱은 G.711을 사용하였으며, 네트워크에서의 패킷 지연은 균등(uniform) 분포 함수를 사용하여 None(시나리오 1), 20ms(시나리오 2), 40ms(시나리오 3), 60ms(시나리오 4) 범위로 설정하였다.
Adaptive 모드 지터 버퍼의 파라미터는 "Minimum Value: Default", "Maximum Value: 80", "Sliding Mean Coefficient: 0.5", "Buffer Sizing Interval: 100"으로 설정하였다.

 


다음 그림은 각 시나리오별로 지터 버퍼 크기를 관찰한 결과이다. x축은 시간이며, y축은 측정된 지터 버퍼 크기이다. 지터 버퍼의 크기가 시간에 따라 계속 변하고 있으며, 네트워크에서의 패킷 지연 변화폭이 증가할수록(즉, 지터가 커질수록) 평균적인 지터 버퍼 크기 역시 증가하고 있는 것을 알 수 있다.

 


다음 그림은 각 시나리오별 MOS 값 결과를 나타낸 것이다. x축은 시간이며, y축은 측정된 MOS 값이다. 모든 시나리오에 대해서 동일한 지터 버퍼를 사용하고 있음에도 불구하고 Adaptive 모드 지터 버퍼 사용시에는 최악의 경우(시나리오 3, 4)에도 일정 수준의 MOS 값이 유지되는 것을 알 수 있다.

 


그런데, Fixed 모드 지터 버퍼의 결과("VoIP 지터 버퍼(3) - Fixed 모드" 참조)와 비교해보면, Adaptive 모드 지터 버퍼의 MOS 결과 값은 매우 낮다. 그 원인에 대해서는 이후에 별도의 글에서 다루도록 하겠다.

Posted by 신상헌
,

지터 버퍼의 사용이 음성 품질 향상에 어느 정도 기여하는지를 시뮬레이션을 통해 확인해보도록 하자. 다음 그림은 Fixed 모드 지터 버퍼의 효과를 확인하기 위한 시험망 토폴로지이다.

 


음성 코덱은 G.711을 사용하였으며, 균등(uniform) 분포 함수를 사용하여 None(시나리오 1), 20m(시나리오 2), 40ms(시나리오 3), 60ms(시나리오 4) 범위로 네트워크 지연이 발생("네트워크 Jitter(1) - VoIP 실험을 위한 네트워크 Jitter 설정" 참조)하도록 하였다. (지터 발생을 위한 네트워크 패킷 지연 모델로 uniform 분포가 현실적인가의 문제는 여기에서 논하지 않겠다. 보다 현실적인 모델로는 Laplace 분포 등이 고려될 수 있겠지만("네트워크 Jitter(3) - Laplace 모델" 참조), 해석의 편의를 위해서 여기에서는 uniform 분포를 사용하였다.)
다음 그림은 시뮬레이션 결과를 나타낸 것이다. x축은 지터 버퍼의 크기이며, y축은 측정된 MOS 값이다.

 


지터가 없는 경우(시나리오 1)에는 지터 버퍼의 크기가 작을수록 높은 MOS 값을 보여준다. 하지만, 지터가 발생하는 경우(시나리오 2, 3, 4)에 지터 버퍼의 크기가 작으면 MOS는 급격히 저하되지만, 충분한 크기의 지터 버퍼가 있으면(시나리오 2: 40ms 이상, 시나리오 3: 50ms 이상, 시나리오 4: 70ms 이상) MOS가 크게 개선됨을 알 수 있다.
Fixe 모드 지터 버퍼의 단점은 지터 범위를 정확히 예측할 수 없거나 가변적인 경우, 적합한 지터 버퍼 크기를 결정하기 어렵다는 것이다. 지터 버퍼의 크기를 너무 크게 설정해주면 평균 지연 시간의 증가로 인해서 MOS를 저하시키며, 반대로 지터 버퍼의 크기를 너무 작게 설정해주면 지터를 완전히 제거하지 못함으로 인해서 MOS를 저하시킨다. 그런데, 위의 결과에서 볼 수 있듯이 해당 네트워크의 특성(지터 크기)에 따라 최적의 지터 버퍼 크기는 서로 다르다. 따라서, 해당 네트워크의 지터 특성을 정확히 모르거나 가변적인 경우, Fixed 모드 지터 버퍼 크기의 최적값을 경정하는데 어려움이 따른다.

Posted by 신상헌
,

지터 버퍼에서의 지연은 다음 수식처럼 지터 버퍼의 크기(패킷 수)와 패킷들의 간격(시간)의 곱으로 계산된다.

 

지터 버퍼 지연 = 지터 버퍼 크기(패킷 수) * 패킷 간격(평균 시간)    (1)

 

Fixed 모드일 경우, 지터 버퍼 지연 계산 결과값은 지터 버퍼 속성의 Nominal Value 값과 동일하다. Adaptive 모드일 경우, 예상 지터 버퍼 지연과 예상 지터에 의한 패킷 손실을 모두 고려하였을 때 최상의 MOS 값을 얻을 수 있는 것으로 예측되는 지터 버퍼 크기가 선택되어 사용된다.

 

'Riverbed Modeler(OPNET) > VoIP Model' 카테고리의 다른 글

VoIP 지터 버퍼(4) - Adaptive 모드  (0) 2018.01.13
VoIP 지터 버퍼(3) - Fixed 모드  (0) 2016.08.01
VoIP 지터 버퍼(1) - 파라미터 설정  (0) 2016.04.03
G.729 모델링  (0) 2015.09.16
G.711 모델링  (0) 2015.08.01
Posted by 신상헌
,

"OPNET 버전간의 호환성 문제(2) - OPNET 16.1 VoIP의 예"에서 언급하였듯이 Riverbed(OPNET) Modeler VoIP 모델에서는 지터 버퍼(Jitter Buffer) 기능을 제공한다. 지터 버퍼란 VoIP에서 지터에 따른 음성 품질 저하를 완화시키기 위하여 수신단에서 음성 재생전에 음성 데이터 프레임을 저장해두는 버퍼이다. 지터 버퍼는 디지터 버퍼(De-jitter Buffer) 또는 Playout Buffer라고도 불리우며, Riverbed(OPNET) Modeler에서는 "Playout Delay"로 표현된다.
다음 그림은 Riverbed(OPNET) Modeler에서 제공하는 지터 버퍼 속성 설정창을 보인 것이다.

 

 


각 속성 항목의 용도는 다음과 같다.


- Mode : 지터 버터가 Fixed 모드인지, Adaptive 모드인지를 결정한다. 기본값은 Fixed이다.
- Nominal Value : Fixed 모드일 경우, 지터 버퍼의 크기(ms). 기본값은 200(16.0 버전 이하) 또는 40(16.1 버전 이상)이다. ("OPNET 버전간의 호환성 문제(2) - OPNET 16.1 VoIP의 예" 참조)
- Minimum Value : Adaptive 모드일 경우, 지터 버터의 최소 크기(ms). 기본값은 10(Low)이다.
- Maximum Value : Adaptive 모드일 경우, 지터 버터의 최대 크기(ms). 기본값은 250(16.0 버전 이하) 또는 60(16.1 버전 이상)이다.
- Sliding Mean Coefficient : Adaptive 모드일 경우, 지터 버퍼 크기 계산을 위한 계수. 기본값은 0.5이다.

- Buffer Sizing Interval : Adaptive 모드일 경우, 지터 버터 크기를 계산하는 주기(ms). 기본값은 "Between Talkspurts"이며, 각 유음 구간의 시작 시점마다 지터 버퍼의 크기를 계산한다.

'Riverbed Modeler(OPNET) > VoIP Model' 카테고리의 다른 글

VoIP 지터 버퍼(3) - Fixed 모드  (0) 2016.08.01
VoIP 지터 버퍼(2) - 지연 계산  (0) 2016.06.01
G.729 모델링  (0) 2015.09.16
G.711 모델링  (0) 2015.08.01
VoIP ptime 모델링  (0) 2015.03.11
Posted by 신상헌
,

"OPNET 중급입문"과 "G.711 모델링"에서 설명하였듯이, Riverbed Modeler(OPNET)에서는 음성 코덱을 간편하게 모델링하여 시뮬레이션에서 사용하는 기능을 제공할 뿐만 아니라 널리 사용되는 음성 코덱들을 이미 모델링하여 제공하므로 쉽게 사용할 수 있다.
G.729 계열의 경우, G.729A는 기본적으로 모델링되어 있어서 손쉽게 사용할 수 있다. 그러면, G.729 계열의 다른 코덱들은 어떻게 모델링 할 수 있을까? G.711과는 달리 G.729는 G.729A와 G.729B를 포괄하는 표현이 아니다. G.729A는 G.729와 호환되면서 보다 낮은 연산량이 사용되는 새로운 코덱이며, G.729B는 G.729나 G.729A에서 묵음 압축을 적용하는 방안이다[1, 2].
G.729는 G.729A와 Frame Size, Coding Rate가 동일하며 음성 품질도 미세한 차이가 있을 뿐이므로, Riverbed Modeler(OPNET)에서 기본적으로 제공하는 G.729A 음성 코덱 정보를 동일하게 사용하면 된다. G.729B 또는 G.729AB는 묵음 압푹이 적용된 것 뿐이므로, Riverbed Modeler(OPNET)에서 기본적으로 제공하는 G.729A (silence) 음성 코덱 정보를 사용하면 된다. 단, Riverbed Modeler(OPNET)에서는 묵음 구간에서 패킷이 전혀 발생되지 않으며, Comfort Noise 발생을 위한 Silence Insertion Descriptor(SID) 프레임 역시 사용되지 않는다. 따라서, SID 프레임과 관련된 사항은 시뮬레이션 할 수 없다(해당 기능을 구현하는 작업은 그리 어렵지 않을 것으로 생각된다).


[1] ITU-T G.729, "Coding of speech at 8 kbit/s using conjugate-structure algebraic-code-excited linear prediction (CS-ACELP)," 2012.
[2] http://en.wikipedia.org/wiki/G.729

'Riverbed Modeler(OPNET) > VoIP Model' 카테고리의 다른 글

VoIP 지터 버퍼(2) - 지연 계산  (0) 2016.06.01
VoIP 지터 버퍼(1) - 파라미터 설정  (0) 2016.04.03
G.711 모델링  (0) 2015.08.01
VoIP ptime 모델링  (0) 2015.03.11
MOS와 전달지연의 관계  (0) 2015.02.12
Posted by 신상헌
,

"OPNET 중급입문"에서 설명하였듯이, Riverbed(OPNET) Modeler에서는 음성 코덱을 간편하게 모델링하여 시뮬레이션에서 사용하는 기능을 제공할 뿐만 아니라, 널리 사용되는 음성 코덱들을 이미 모델링하여 제공하므로 쉽게 사용할 수 있다.
G.711도 이렇게 기본적으로 모델링되어 있는 코덱중의 하나이므로, 손쉽게 사용할 수 있다. 그러면, G.711A는 어떻게 모델링할 수 있을까? G.711은 A-law와 u-Law의 두가진 압축 알고리즘을 사용하며[1], G.711 A-Law를 G.711A로, G.711 u-Law를 G.711U로 표기하기도 한다. 따라서, G.711과 G.711A/G.711U는 별개의 코덱이 아니며, G.711은 G.711A와 G.711U를 포괄하는 표현이다.
Riverbed(OPNET) Modeler 모델링 관점에서 G.711A와 G.711U는 아무런 차이가 없다. 즉, Riverbed(OPNET) Modeler에서의 음성코덱 모델링 요소인 Frame Size, Lookahead Size, DSP Processing Ratio, Coding Rate, Equipment Impairement Factor, Packet Loss Robustness Factor에 있어서 G.711A와 G.711U는 동일한 값을 가진다. Riverbed(OPNET) Modeler에서 기본적으로 제공하는 음성 코덱 모델에서 G.711A/G.711U대신 G.711이라는 이름을 사용한 것도 이러한 이유 때문인 것으로 생각된다.
그러므로, G.711A에 대한 모델링이 필요한 경우에도 Riverbed(OPNET) Modeler에서 기본적으로 제공되는 G.711 음성 코덱 정보를 사용하면 된다.

 

[1] ITU-T G.711, "Pulse code modulation (PCM) of voice frequencies," 1998.
[2] http://en.wikipedia.org/wiki/G.711

'Riverbed Modeler(OPNET) > VoIP Model' 카테고리의 다른 글

VoIP 지터 버퍼(1) - 파라미터 설정  (0) 2016.04.03
G.729 모델링  (0) 2015.09.16
VoIP ptime 모델링  (0) 2015.03.11
MOS와 전달지연의 관계  (0) 2015.02.12
MOS와 패킷 손실률의 관계  (0) 2014.12.22
Posted by 신상헌
,

"ptime"은 SDP atribute중 하나로써, 한개의 RTP 패킷에 담겨있는 미디어 정보의 재생시간을 의미한다[1, 2]. 그런데, Riverbed Modeler(OPNET)의 SIP 모델에는 ptime 설정에 관련된 속성항목이 없으므로, Riverbed Modeler(OPNET)에서는 ptime을 직접 설정해줄 수 없다.
따라서, ptime에 관련된 시뮬레이션 수행시에는 일부 제약 사항이 발생한다(Ex: 송/수신자간의 ptime 협상과정 진행에 관련된 사항들은 시뮬레이션 할 수 없음). 하지만, RTP 패킷에 실리는 정보의 양을 지정하기 위한 속성항목들을 별도로 제공하고 있으므로, 설정된 ptime 값에 의한 효과를 시뮬레이션할 때에는 문제가 없다(Ex: ptime에 따른 트래픽 발생량이나 MOS 변화는 시뮬레이션 가능).

 

[1] M. Handley, V. Jacobson, C. Perkins, "SDP: Session Description Protocol," RFC 4566, IETF, Jul. 2006.
[2] S. Casner, "Media Type Registration of RTP Payload Formats," RFC 4855, IETF, Feb. 2007

 

'Riverbed Modeler(OPNET) > VoIP Model' 카테고리의 다른 글

G.729 모델링  (0) 2015.09.16
G.711 모델링  (0) 2015.08.01
MOS와 전달지연의 관계  (0) 2015.02.12
MOS와 패킷 손실률의 관계  (0) 2014.12.22
VoIP에서의 Jitter 값 범위  (0) 2014.05.08
Posted by 신상헌
,

"VoIP MOS 계산"에서 설명하였듯이, 전달지연(Delay)은 MOS를 결정하는 중요한 요소이다. 그러면, 전달지연이 MOS에 어떠한 영향을 미치는지 조금 더 자세하게 살펴보도록 하자. 다음 그림은 VoIP 트래픽이 흘러가는 네트워크의 패킷 전달지연을 80 ~ 580ms 범위에서 변화시켰을 때, MOS 값 변화에 대한 Riverbed Modeler(OPNET) 시뮬레이션 결과를 나타낸 것이다.

 


전달 지연이 증가하여도 초기에는 MOS 값은 크게 감소하지 않는다. 하지만, 나중에는 전달지연의 증가에 따라 MOS가 급격히 감소한다. 즉, 전달지연이 작을 때(약 150ms 이하)에는 전달지연이 MOS에 크게 영향을 미치지 않지만, 전달지연이 클 때(약 150ms 이상)에는 전달지연에 따라 MOS가 크게 영향을 받는다. 이러한 경향은 패킷 손실률의 경우("MOS와 패킷 손실률의 관계" 참조)와는 확연히 다른 것이다.

 

'Riverbed Modeler(OPNET) > VoIP Model' 카테고리의 다른 글

G.711 모델링  (0) 2015.08.01
VoIP ptime 모델링  (0) 2015.03.11
MOS와 패킷 손실률의 관계  (0) 2014.12.22
VoIP에서의 Jitter 값 범위  (0) 2014.05.08
VoIP 코덱별 최대 MOS 값  (0) 2013.11.07
Posted by 신상헌
,