Inleiding
Dit document beschrijft bandbreedteberekeningen en -functies voor spraakcodec om bandbreedte aan te passen of te behouden wanneer Voice over IP (VoIP) wordt gebruikt.
Achtergrondinformatie
Eén van de belangrijkste factoren die u in overweging moet nemen wanneer u pakketspraaknetwerken bouwt, is de juiste capaciteitsplanning. Binnen capaciteitsplanning is de bandbreedteberekening een belangrijke factor om te overwegen wanneer u pakketspraaknetwerken ontwerpt en problemen oplost voor een goede spraakkwaliteit.
Opmerking: als aanvulling op dit document kunt u de TAC Voice Bandwidth Codec Calculator (alleen geregistreerde klanten) gebruiken. Dit hulpmiddel verstrekt informatie over hoe te om de bandbreedte te berekenen die voor de vraag van de pakketstem wordt vereist.
VoIP - per gespreksbandbreedte
Deze veronderstellingen van de protocolheader worden gebruikt voor de berekeningen:
-
40 bytes voor IP (20 bytes) / User Datagram Protocol (UDP) (8 bytes) / Real-Time Transport Protocol (RTP) (12 bytes) kopregels.
-
Compressed Real-time Protocol (cRTP) reduceert de IP/UDP/RTP-headers tot 2 of 4 bytes (cRTP is niet beschikbaar over Ethernet).
-
6 bytes voor Multilink Point-to-Point Protocol (MP) of Frame Relay Forum (FRF) 12 Layer 2 (L2)-header.
-
1 byte voor de end-of-frame markering op MP- en Frame Relay-frames.
-
18 bytes voor Ethernet L2-headers, die 4 bytes Frame Check Sequence (FCS) of Cyclic Redundancy Check (CRC) bevatten.
Opmerking: deze tabel bevat alleen berekeningen voor de standaardgrootte van de spraakpayload in Cisco Call Manager- of Cisco IOS®-softwaregateways met nummer H.323. Voor extra berekeningen, die verschillende grootte van de spraakpayload en andere protocollen omvatten, zoals Voice over Frame Relay (VoFR) en Voice over ATM (VoATM), gebruikt u de TAC Voice Bandwidth Codec Calculator (alleen geregistreerde klanten).
Codec-informatie |
Bandbreedtecalculaties |
Codec- en bitsnelheid (Kbps) |
Codec-steekproefgrootte (bytes) |
Codec-voorbeeldinterval (ms) |
Gemiddelde adviesscore (MOS) |
Grootte spraakpayload (bytes) |
Grootte spraakpayload (ms) |
Pakketten per seconde (PPS) |
Bandbreedte MP of FRF.12 (Kbps) |
Bandbreedte met cRTP MP of FRF.12 (Kbps) |
Bandbreedte Ethernet (Kbps) |
G.711 (64 Kbps) |
80 Bytes |
10 ms |
4.1 |
160 Bytes |
20 ms |
50 |
82,8 Kbps |
67,6 Kbps |
87,2 Kbps |
G.729 (8 Kbps) |
10 Bytes |
10 ms |
3.92 |
20 Bytes |
20 ms |
50 |
26,8 Kbps |
1,6 Kbps |
31,2 Kbps |
G.723,1 (6,3 Kbps) |
24 Bytes |
30 ms |
3.9 |
24 Bytes |
30 ms |
33.3 |
18,9 Kbps |
8,8 Kbps |
21,9 Kbps |
G.723,1 (5,3 Kbps) |
20 Bytes |
30 ms |
3.8 |
20 Bytes |
30 ms |
33.3 |
17,9 Kbps |
7,7 Kbps |
20,8 Kbps |
G.726 (32 Kbps) |
20 Bytes |
5 ms |
3.85 |
80 Bytes |
20 ms |
50 |
50,8 Kbps |
35,6 Kbps |
5,2 Kbps |
G.726 (24 Kbps) |
15 Bytes |
5 ms |
|
|
20 ms |
50 |
42,8 Kbps |
27,6 Kbps |
47,2 Kbps |
G.728 (16 Kbps) |
10 Bytes |
5 ms |
3.61 |
60 Bytes |
30 ms |
33.3 |
28,5 Kbps |
18,4 Kbps |
31,5 Kbps |
G722_64k (64 Kbps) |
80 Bytes |
10 ms |
4.13 |
160 Bytes |
20 ms |
50 |
82,8 Kbps |
67,6 Kbps |
87,2 Kbps |
LLC_mode_20 (15,2 Kbps) |
38 Bytes |
20 ms |
NA |
38 Bytes |
20 ms |
50 |
34,0 Kbps |
18,8 Kbps |
38,4 Kbps |
ilbc_mode_30 (13,3 Kbps) |
50 Bytes |
30 ms |
NA |
50 Bytes |
30 ms |
33.3 |
25,867 Kbps |
15,73 Kbps |
28,8 Kbps |
Uitleg van de voorwaarden
Codec-bitsnelheid (Kbps) |
Gebaseerd op de codec, is dit het aantal beetjes per seconde die moeten worden overgebracht om een stemvraag te leveren. (codec bit rate = codec sample size / codec sample interval). |
Codec-steekproefgrootte (bytes) |
Gebaseerd op de codec, is dit het aantal bytes dat door de Digitale Signaalprocessor (DSP) bij elk codec steekproefinterval wordt gevangen. Zo werkt de G.729 coder op voorbeeldintervallen van 10 ms, wat overeenkomt met 10 bytes (80 bits) per sample met een bitsnelheid van 8 Kbps. (codec bit rate = codec sample size / codec sample interval). |
Codec-voorbeeldinterval (ms) |
Dit is het steekproefinterval waarbij de codec werkt. Zo werkt de G.729 coder op voorbeeldintervallen van 10 ms, wat overeenkomt met 10 bytes (80 bits) per sample met een bitsnelheid van 8 Kbps. (codec bit rate = codec sample size / codec sample interval). |
Gemiddelde adviesscore (MOS) |
MOS is een systeem dat wordt gebruikt om de spraakkwaliteit van telefoonverbindingen te beoordelen. Met MOS beoordeelt een breed scala aan luisteraars de kwaliteit van een stemmonster op een schaal van 1 (slecht) tot 5 (uitstekend). De scores worden gemiddeld om de MOS voor de codec te leveren. |
Grootte spraakpayload (bytes) |
De grootte van de stemlading vertegenwoordigt het aantal bytes (of bits) dat in een pakket is ingevuld. De grootte van de stemlading moet een veelvoud van de codec steekproefgrootte zijn. G.729-pakketten kunnen bijvoorbeeld 10, 20, 30, 40, 50 of 60 bytes van de spraakpayloadgrootte gebruiken. |
Grootte spraakpayload (ms) |
De grootte van de stemlading kan ook in termen van de codec steekproeven worden vertegenwoordigd. Een G.729 spraakpayload-grootte van 20 ms (twee 10 ms codec-voorbeelden) vertegenwoordigt bijvoorbeeld een spraakpayload van 20 bytes [(20 bytes *)
/ (20 ms) = 8 Kbps ] |
PS |
PPS staat voor het aantal pakketten dat elke seconde moet worden verzonden om de codec bitsnelheid te leveren. Bijvoorbeeld, voor een G.729 vraag met de grootte van de stemlading per pakket van 20 bytes (160 beetjes), moeten 50 pakketten om de seconde worden overgebracht [50 pps = (8 Kbps) / (160 beetjes per pakket)] |
Bandbreedterekeningsformules
Deze berekeningen worden gebruikt:
-
Totale pakketgrootte = (L2-header: MP of FRF.12 of Ethernet) + (IP/UDP/RTP-header) + (grootte van spraakpayload)
-
PPS = (codec bitsnelheid) / (grootte spraakpayload)
-
Bandbreedte = totale pakketgrootte * PPS
Berekening van monster
De vereiste bandbreedte voor een G.729-oproep (8 Kbps codec-bitsnelheid) met cRTP, MP en de standaard 20 bytes van de spraakpayload is bijvoorbeeld:
-
Totale pakketgrootte (bytes) = (MP-header van 6 bytes) + ( gecomprimeerde IP/UDP/RTP-header van 2 bytes) + (spraak-payload van 20 bytes) = 28 bytes
-
Totale pakketgrootte (bits) = (28 bytes) * 8 bits per byte = 224 bits
-
PPS = (8 Kbps codec bitsnelheid) / (160 bits) = 50 pps
Opmerking: 160 bits = 20 bytes (standaard spraakpayload) * 8 bits per byte
-
Bandbreedte per aanroep = spraakpakketgrootte (224 bits) * 50 pps = 11,2 Kbps
Grootte van spraakpayload configureren in Cisco Call Manager en Cisco IOS-gateways
De grootte van de spraakpayload per pakket kan worden geconfigureerd in Cisco Call Manager en Cisco IOS-gateways.
Opmerking: als de Cisco IOS-gateway in Cisco Call Manager is geconfigureerd als een MGCP-gateway (Media Gateway Control Protocol), wordt alle codec-informatie (codec-type, payloadgrootte, detectie van spraakactiviteit, enzovoort) beheerd door Cisco CallManager.
In Cisco Call Manager kan de grootte van de spraakpayload per pakket op systeembrede basis worden geconfigureerd. Deze eigenschap wordt ingesteld in Cisco Call Manager Administration (Service > Service Parameters > select_server > Cisco Call Manager) met deze drie serviceparameters:
-
PreferredG711MillisecondPacketSize - (standaardinstelling: 20 ms. Beschikbare instellingen: 10, 20 en 30 ms.)
-
PreferredG729MillisecondPacketSize - (standaardinstelling: 20 ms. Beschikbare instellingen: 10, 20, 30, 40, 50 en 60 ms.)
-
PreferredG723MillisecondPacketSize - (standaardinstelling: 30 ms. Beschikbare instellingen: 30 en 60 ms.)
In Cisco Call Manager wordt de grootte van de spraakpayload geconfigureerd in termen van milliseconden (ms) monsters. Gebaseerd op de codec, brengt deze lijst sommige ms steekproeven aan de daadwerkelijke payloadgrootte in bytes in kaart.
Codec |
Grootte spraakpayload (ms) |
Grootte spraakpayload (bytes) |
Opmerkingen |
G.711 |
20 ms (standaard) |
160 Bytes |
Merk op dat de codec bitsnelheid altijd wordt gehandhaafd. Bijvoorbeeld: G.711 codec = [240 bytes * 8(bits/bytes)] / 30 ms = 64 Kbps |
30 ms |
240 Bytes |
G.729 |
20 ms (standaard) |
20 Bytes |
30 ms |
30 Bytes |
G.723 |
30 ms (standaard) |
|
|
In Cisco IOS-gateways is een functie toegevoegd in Cisco IOS-softwarerelease 12.0(5)T waarmee de grootte van de spraakpayload (in bytes) voor VoIP-pakketten kan worden gewijzigd via de CLI. De nieuwe opdrachtsyntaxis volgt:
Cisco-Router(config-dial-peer)#codec g729r8 bytes ?
Each codec sample produces 10 bytes of voice payload.
Valid sizes are:
10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120,
130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 230
Any other value within the range will be rounded down to nearest valid size.
<10-230> Choose a voice payload size from the list above
Impact van een wijziging in de grootte van spraakpayload
Het aantal codec steekproeven per pakket is een andere factor die de bandbreedte en de vertraging van een vraag van VoIP bepaalt. De codec definieert de grootte van het monster, maar het totale aantal in een pakket geplaatste monsters beïnvloedt hoeveel pakketten per seconde worden verzonden.
Wanneer u de grootte van de spraakpayload verhoogt, wordt de VoIP-bandbreedte kleiner en neemt de totale vertraging toe. Dit voorbeeld illustreert dit:
-
G.729 oproep met een spraakpayloadgrootte van 20 bytes (20 ms): (40 bytes van IP/UDP/RTP-headers + 20 bytes spraak-payload)* 8 bits per byte * 50 pps = 24 Kbps
-
G.729 gesprek met een spraakpayloadgrootte van 40 bytes (40 ms): (40 bytes van IP/UDP/RTP-headers + 40 bytes spraak-payload) * 8 bits per byte * 25 pps = 16 Kbps
Opmerkingen:
- L2-headers worden in deze berekening niet meegenomen.
- De berekeningen tonen aan dat terwijl de payload-grootte wordt verdubbeld, het aantal benodigde pakketten per seconde vervolgens wordt gehalveerd.
- Zoals gedefinieerd in de specificaties van International Telecommunication Union Telecommunication Standardisation Sector (ITU-T) G.114, is de aanbevolen totale vertraging voor spraak 150 ms. Voor een privaat netwerk is 200 ms een redelijk doel en moet 250 ms het maximum zijn.
Spraakopsporing
Met circuit-switched spraaknetwerken gebruiken alle spraakoproepen 64 Kbps vaste-bandbreedte links ongeacht hoeveel van het gesprek spraak is en hoeveel stilte is. Met VoIP-netwerken worden alle gesprekken en stilte gepakketteerd. Met Voice Activity Detection (VAD) kunnen stiltepakketten worden onderdrukt.
In de loop van de tijd en als gemiddelde op een volume van meer dan 24 gesprekken, kan VAD tot een 35 procent bandbreedte-besparing bieden. De besparingen worden niet gerealiseerd op elke individuele spraakoproep, of op een specifieke puntmeting. Voor netwerkontwerp en bandbreedteontwikkeling mag VAD niet in aanmerking worden genomen, met name voor links die minder dan 24 spraakoproepen tegelijk vervoeren. Verschillende functies, zoals muziek in wachtstand en fax, maken VAD ineffectief. Wanneer het netwerk is ontworpen voor de volledige bandbreedte van spraakoproepen, zijn alle besparingen die door VAD worden geleverd beschikbaar voor gegevenstoepassingen.
VAD levert ook Comfort Noise Generation (CNG). Omdat u stilte voor een losgekoppeld gesprek kunt verwarren, biedt CNG lokaal gegenereerde witte ruis, zodat de oproep normaal verbonden lijkt met beide partijen. G.729 Annex-B en G.723.1 Annex-A bevatten een geïntegreerde VAD-functie, maar voor het overige voert hetzelfde uit als G.729 en G.723.1.
In Cisco Call Manager kan VAD worden ingeschakeld (standaard uitgeschakeld) met deze serviceparameters:
-
SilenceSuppressionSystemWide - Deze parameter selecteert de VAD-instelling voor alle magere eindpunten (bijvoorbeeld Cisco IP-telefoons en slimme gateways).
-
SilenceSuppressionWith Gateways - Deze parameter selecteert de VAD-instelling voor alle MGCP-gateways. Dit heeft geen effect op H.323 gateways. VAD op H.323 gateways moet op de gateway worden uitgeschakeld.
U kunt deze serviceparameters vinden onder Cisco Call Manager Administration (Service > Serviceparameters > select_server > Cisco CallManager).
RTP-headercompressie voor gecomprimeerde RTP (cRTP)
Alle VoIP-pakketten bestaan uit twee componenten: spraak- en IP/UDP/RTP-headers. Hoewel de spraakvoorbeelden worden gecomprimeerd door de digitale signaalprocessor (DSP) en in grootte kunnen variëren op basis van de gebruikte codec, zijn deze kopregels een constante 40 bytes in lengte. Vergeleken met de 20 bytes van stemsteekproeven in een standaardG.729 vraag, maken deze kopballen omhoog een aanzienlijke hoeveelheid overheadkosten. Met cRTP kunnen deze headers gecomprimeerd worden tot twee of vier bytes. Deze compressie biedt aanzienlijke bandbreedte-besparingen voor VoIP. Een standaard G.729 VoIP-oproep verbruikt bijvoorbeeld 24 Kb zonder cRTP, maar slechts 12 Kb met cRTP ingeschakeld.
Omdat cRTP VoIP-oproepen comprimeert op een link-voor-link basis, moeten beide uiteinden van de IP-link worden geconfigureerd voor cRTP.
In Cisco IOS-softwarereleases 12.0.5T en hoger is cRTP processwitched, waardoor de schaalbaarheid van cRTP-oplossingen aanzienlijk wordt beperkt vanwege de CPU-prestaties. De meeste van deze problemen zijn opgelost door verschillende cRTP-prestatieverbeteringen die in Cisco IOS-softwarereleases 12.0.7T tot en met 12.1.2T zijn geïntroduceerd. Dit is een samenvatting van de geschiedenis.
-
cRTP is proces-switched in Cisco IOS-softwarerelease 12.0.5T en hoger.
-
In Cisco IOS-softwarerelease 12.0.7T en vervolgens in 12.1.1T wordt ondersteuning voor snelle switching en Cisco Express Forwarding-switching voor cRTP geïntroduceerd.
-
In Cisco IOS-softwarerelease 12.1.2T worden verbeteringen in de algoritmische prestaties geïntroduceerd.
Wanneer u cRTP naar het snelswitchingpad verplaatst, wordt het aantal RTP-sessies (VoIP-oproepen) dat door VoIP-gateways en tussenliggende routers kan worden verwerkt, aanzienlijk verhoogd.
Heuristiek voor compressie
Aangezien RTP geen afzonderlijke pakketheader heeft, wordt een RTP-stroom (voor cRTP) van een UDP-stroom (cUDP) onderscheiden door het gebruik van heuristiek. De exacte heuristiek die momenteel wordt gebruikt om RTP-pakketten te detecteren voor compressie zijn:
-
Het bestemmingspoortnummer is gelijk.
-
Het poortnummer van de bestemming valt binnen het bereik 16384-32767 of 49152-65535.
-
Het veld RTP-versie is ingesteld op twee.
-
Het veld RTP-extensie wordt op nul ingesteld.
Gerelateerde informatie